[level 1] 부족한 금액 계산하기
·
알고리즘/JavaScript
문제 풀이 코드 function solution(price, money, count) { let total = 0; for (let i = 1; i 0 ? tmp : 0; } 이분을 for 문을 돌리지 않았고, 가우스 공식을 이용하셨다. 가우스 공식이란 1 ~ n 까지의 합을 구할때, (n * (n + 1)) / 2 를 하면 합을 알수있다는 공식이다. 따라서 count * (count + 1) / 2 에다가, 처음의 가격 Price 를 곱해 price * count * (count + 1) / 2 를 수행한다. 공식숙지의 중요성
[level 1] 나머지가 1이 되는 수 찾기
·
알고리즘/JavaScript
문제 풀이 코드 function solution(n) { const start = n % 2 === 0 ? 3 : 2; for (let i = start; i < n; i += 2) { if (n % i === 1) return i; } } 풀이 과정 간단한 문제였다, 다만 1부터 증가시켜 찾기엔 너무 비효율 적이라고 생각했다. 왜냐하면 n이 짝수라면, 짝수로 나누었을때는 무조건 1이 나올수가 없다, 반대로 n이 홀수라면 짝수로 나누어야지만, 1이 나올것이다. 이에 따라 start 값을 짝수일경우 3으로, 홀수일경우 2 로 설정하여 2씩 증가시키며 값을 찾아 나갔다.
[level 1] 가운데 글자 가져오기
·
알고리즘/JavaScript
문제 풀이 코드 function solution(s) { let lengthCheck = s.length / 2; let index = Math.floor(lengthCheck); return lengthCheck !== index ? s[index] : s[index - 1] + s[index] ; } 풀이 과정 문자열의 길이를 2로 나누어, 가운데 인덱스를 구해 주었다. 2로 나누었을때 값이 소수로 나온다면, 해당 길이가 홀수이기 때문에 한글자만 반환하고, 정수로 나온다면 해당길이가 짝수이기 때문에 두글자를 반환하도록 했다. 다른사람의 풀이 function solution(s) { return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2..
[level 1] [1차]다트 게임
·
알고리즘/JavaScript
문제 풀이 코드 function solution(dartResult) { let scoreSplit = dartResult.match(/\d.?\D/g); let count = new Array(3).fill(0); count = scoreSplit.map((item, index) => { for (let i = 0; i < item.length; i++) { if (!isNaN(item[i])) { count[index] = count[index] * 10 + Number(item[i]); } else if (item[i] === 'S') { count[index] **= 1; } else if (item[i] === 'D') { count[index] **= 2; } else if (item[i] =..
[level 1] 같은 숫자는 싫어
·
알고리즘/JavaScript
문제 풀이 코드 function solution(arr) { var answer = [arr[0]]; for (let i = 1; i < arr.length; i++) { if (arr[i - 1] != arr[i]) answer.push(arr[i]); } return answer; } 풀이 과정 배열의 첫 요소는 무조건 포함이 되기 때문에, 우선 첫 요소를 배열에 넣어주고, 인덱스 1 부터 비교하여 현재 인덱스 값이 바로 앞의 인덱스 값과 같지 않은 경우만, 배열에 해당 요소를 추가하였다 아무래도 내장 메서드에 익숙해 져서 그런지 for 문을 사용하는 순간 뭔가 더 간단하게 구현할 수 있을거 같다 다른사람의 코드를 봤다. 다른사람의 코드 function solution(arr) { return arr..