[풀이] function solution(absolutes, signs) { let result = 0; for (let i = 0; i < signs.length; i++) { absolutes[i] = signs[i] ? absolutes[i] : -absolutes[i]; result += absolutes[i]; } return result; } 처음에는 absolute[i] 값을 받지 않고 삼항연산자만 작성했다. 계속 값이 받아지지 않았던 이유는 값 받을 곳을 만들지 않았기 때문이었다. 1. 결과값을 받을 변수를 설정한다. 2. for문을 돌려서 absolutes[i] 가 signs[i] === true 일 때 양수를, false일 때 - 를 붙여 음수로 만들어준다. 3. 결과값에 absolut..
코딩 테스트/Programmers - 1
[풀이] function solution(arr) { const minNumber = Math.min(...arr); const resultArr = arr.filter((element) => element !== minNumber); return resultArr.length === 0 ? [-1] : resultArr; } 1. 배열 arr 을 전개구문을 통해 최소값을 찾아준다. 2. filter() 함수를 통해 최소값을 제거한 요소들을 새로운 배열로 만들어준다. 3. 만약 resultArr 배열의 길이가 0이라면 -1 을 리턴하고 아니면 resultArr 배열을 리턴해준다. 처음에는 단순히 arr 길이가 0일 때로 조건을 설정했었다. 안되는 이유는 제한 조건에 arr의 길이는 1이고 당연히 resu..
[풀이] function solution(phone_number) { const numArr = phone_number.split(""); const backNumber = numArr.splice(phone_number.length-4, 4).join(""); const frontNumber = numArr.join("").replace(/[0-9]/g, "*"); return frontNumber + backNumber; } 1. 먼저 번호를 배열로 바꿔준다. 2. 뒤 4자리를 splice()를 통해 값을 받아 놓는다. - 이때 splice(phone_number.length-4, 4) 인 이유 만약 phone_number가 "02777888" 이라면 numArr = ['0', '2', '7', '7..
[풀이] function solution(d, budget) { let result = 0; let sum = 0; d = d.sort((a, b) => a - b); for (let i = 0; i budget) return result; result++; } return result; } if - else를 사용해 break 로 종료하는 것 보다 sum에 d의 값을 누적하다가 sum > budget 일 때 바로 return result 하는 것이 좋은 방법이 될 것 같다. sort 메서드는 기존 배열을 바꿔주는..
[처음 푼 풀이] function solution(arr, divisor) { let newArr = []; for (let i = 0; i < arr.length; i++) { if (arr[i] % divisor === 0) { newArr.push(arr[i]); newArr.sort(); } else { newArr.push(-1); } } return newArr; } 1. 새로운 배열을 받아줄 newArr 변수를 설정함. 2. for문을 돌려서 arr[i]가 divisor로 나눠진다면, newArr에 push를 해 값을 배열에 넣어줌. 3. 그리고 그 값들을 sort를 이용해 오름차순으로 정렬해줌. 4. 만약 divisor로 나누어 떨어지지 않으면 newArr에 -1을 push함. 그런데, 여..
[처음 푼 풀이] if(a === b){return a} else{ return a + b + ...? } 처음에 풀이를 if - else 를 이용해서 풀어보려고 했음 하지만 위 풀이와 같이 a 와 b 사이에 있는 값의 합을 구할 수가 없음 결과값은 a + (a+1) + (a+2) + ... + b 이고 계속 1씩 증가하기 때문에 for문을 돌려야겠다고 생각함! [예시] const arr = [1, 2, 3, 4]; let sum = 0; for(let i = 0; i < arr.length; i++){ sum += arr[i]; } return sum; 예시처럼 배열안의 값을 더할 때는 sum에 arr[0] , arr[1] , ... 반복하면서 값을 누적시켜 더해주는 것 하지만, 문제에서는 배열을 만들..
[처음 푼 풀이] function solution(price, money, count) { let fee = 0; for (let count = 1; count fee) return 0; } 1. 먼저 요금을 반환받을 변수 설정 2. for문 안에서 count를 변수로 주고 요금에 원래가격 * 횟수 를 곱해 누적시킴 3. 그리고 요금에서 가지고 있던 돈을 빼서 리턴받음 4. 근데 여기서.. count
[풀이] 이번 문제는 어려웠던 문제였음! 1. 소수찾는 법을 알아야했다. (소수찾는 법을 알아도 문제를 풀기가 힘들었다) 2. 풀이가 여러가지 방법이 존재한다. function solution(n) { const nArr = new Array(n).fill(1); nArr[0] = 0; for (let i = 2; i * i { for (let i = 2; i
[풀이] function solution(s) { const result = s.split("").sort().reverse().join(""); return result; } 1. 처음에는 전에 풀었던 오름차순 문제들처럼 어렵게 생각해서 노트에 이것저것 끄적여봤다. 2. 내림차순을 하기 위해서 arr.sort((a, b) => b - a); 를 사용해야하나 많은 고민을 했다. 3. 대문자가 소문자보다 작게 하는 것이므로 정규표현식을 이용해야하나 고민을 했다. 4. 갈수록 방향이 이상하게 잡히는 것 같아서 구글링을 해 글로된 풀이만 참고했다. 5. 저번 문제들에서 많이 사용했던 split()과 reverse(), join()을 이용하면 쉽게 풀리는 문제였다. [다른 팀원의 풀이] function solu..