Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions yulrang/01_Array/01_Slice_array.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
function solution(numbers, num1, num2) {
var answer = [];

for(let i = num1; i <= num2; i++){
answer.push(numbers[i]);
}
return answer;
}
9 changes: 9 additions & 0 deletions yulrang/01_Array/02_Length_of_array_items.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
function solution(strlist) {
var answer = [];

for(let i=0; i<strlist.length; i++){
answer.push(strlist[i].length);
}

return answer;
}
16 changes: 16 additions & 0 deletions yulrang/01_Array/03_Shift_array.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
function solution(numbers, direction) {
var answer = [];
if (direction === "left") {
for(let i=1; i<numbers.length; i++) {
answer.push(numbers[i])
}
answer.push(numbers[0]);
}
if (direction === "right") {
answer.push(numbers[numbers.length-1]);
for(let i=0; i<numbers.length-1; i++) {
answer.push(numbers[i])
}
}
return answer;
}
7 changes: 7 additions & 0 deletions yulrang/01_Array/04_Number_of_duplicated_item.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
function solution(array, n) {
var answer = 0;
var filteredArr = array.filter((el) => el === n);
answer = filteredArr.length;

return answer;
}
7 changes: 7 additions & 0 deletions yulrang/01_Array/05_Remove_lowest_number.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
function solution(arr) {
if (arr.length === 1) {
return [-1];
}

return arr.filter((el) => el !== Math.min(...arr));
}
12 changes: 12 additions & 0 deletions yulrang/01_Array/06_Sum_of_matrix.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
function solution(arr1, arr2) {
var answer = new Array(arr1.length);

for(let i=0; i<arr1.length; i++) {
answer[i] = new Array(arr1[i].length);
for(let j=0; j<arr1[i].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}

return answer;
}
12 changes: 12 additions & 0 deletions yulrang/01_Array/07_Multiple_number.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
function solution(arr, divisor) {
var answer = [];

arr.forEach((el) => {
if(el % divisor === 0) answer.push(el);
})
answer.sort((a,b) => a-b);

if(answer.length === 0) return [-1];

return answer;
}
5 changes: 5 additions & 0 deletions yulrang/02_Stack/01_Reverse_string.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
function solution(my_string) {
var answer = '';
answer = my_string.split('').reverse().join('');
Comment on lines +2 to +3
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이건 한줄로 작성해도 될거같아요!

return answer;
}
15 changes: 15 additions & 0 deletions yulrang/02_Stack/02_Ctrl_Z.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
function solution(s) {
var answer = 0;
let arr = s.split(' ');
let newArr = [];

for(let i=0; i<arr.length; i++) {
if( arr[i] !== 'Z' ) {
newArr.push(arr[i]);
} else {
newArr.pop(arr[i-1])
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

newArr.pop(); 으로 만 넣어도 될거같아요!

}
}
answer = newArr.reduce((acc, cur) => acc + Number(cur), 0);
return answer;
}
22 changes: 22 additions & 0 deletions yulrang/02_Stack/03_English.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
function solution(numbers) {
var answer = 0;
const numberObj = {
zero : 0,
one : 1,
two : 2,
three : 3,
four : 4,
five : 5,
six : 6,
seven : 7,
eight : 8,
nine : 9,
}

for ( const num in numberObj ){
numbers = numbers.replaceAll(num, numberObj[num]);
}
answer = Number(numbers);

return answer;
}
21 changes: 21 additions & 0 deletions yulrang/02_Stack/04_Calculate_string.js
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

매 순회마다 배열을 사용하고 배열의 값을 더한다음 배열을 변경하는 작업보다는 그냥 숫자를 직접 조작하는 방식이 더 좋을것 같아요!!

function solution(my_string) {
   let answer = 0;
   
   my_string.split(' ').forEach((el, idx, arr) => {
       if(idx === 0) {
           answer = Number(el);
       }
       if(el === '+' || el === '-') {
           if (el === '+'){
               answer += Number(arr[idx + 1]);  // 다음 숫자를 더함
           } else {
               answer -= Number(arr[idx + 1]);  // 다음 숫자를 뺌
           }
       }
   })
   
   return answer;
}

그리고 부호일 경우도 순회를 계속해서 불필요한 순회가 일어나고 있는거같아요.

function solution(my_string) {
   let answer = 0;
   const arr = my_string.split(' ');
   
   answer = Number(arr[0]);

   for(let i = 1; i < arr.length; i += 2) { 
       if(arr[i] === '+') {
           answer += Number(arr[i + 1]);
       } else {
           answer -= Number(arr[i + 1]);
       }
   }
   
   return answer;
}

이런식으로 순회를 줄일수도 있을거 같아요

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
function solution(my_string) {
var answer = 0;
let newArr = [];
my_string.split(' ').forEach((el, idx, arr) => {
if(idx === 0) {
newArr.push(Number(el));
}
if(el === '+' || el === '-') {
newArr.push(Number(arr[idx + 1]))
if (el === '+'){
answer = newArr[0] + newArr[1];
} else {
answer = newArr[0] - newArr[1];
}
newArr = [];
newArr.push(answer);
}
})
answer = newArr[0];
return answer;
}
26 changes: 26 additions & 0 deletions yulrang/02_Stack/05_KaKao_game.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
function solution(board, moves) {
let answer = 0;
let basket = [];

const runBasket = () => {
for(let i=basket.length-1; i>0; i--) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전체 순회를 돌 필요는 없을 것 같아요!

   const runBasket = () => {
       const lastIdx = basket.length - 1;
       if (lastIdx > 0 && basket[lastIdx] === basket[lastIdx - 1]) {
           basket.splice(lastIdx - 1, 2);
           answer += 2;
       }
   }

이런식으로 돌수 있어요!! 그리고 slice메소드 보다는 pop 메소드가 더 시간 복잡도가 적습니다!! 근데 pop을 두번해야해서 지금상태도 괜찮을것 같아요

if(basket[i] === basket[i-1]) {
basket.splice(i-1, 2);
answer += 2;
}
}
}

for(let i=0; i<moves.length; i++) {
for(let j=0; j<board[0].length; j++) {
if(board[j][moves[i]-1] !== 0){
basket.push(board[j][moves[i]-1]);
board[j][moves[i]-1] = 0;
runBasket();
break;
}
}
}

return answer;
}
Loading