📢 공지사항
home
🕹️

1주차 해설

태그
산술 연산
종류
해설

몫 구하기

정수 num1num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

생각하기 쉬운 풀이

function solution(num1, num2) { return Math.floor(num1 / num2); }
JavaScript
복사

빠른 풀이

~not 연산자로, 비트 연산을 통해 2진수 숫자를 다 뒤집을 수 있음 0->1, 1->0 그렇게 되면 결과 값이 정수 -(n+1)이 되는데, 거기에 ~연산을 다시 진행하면 floor와 같은 동작을 함 ~~ > Math.floor() > parseInt 순서로 빠른 수행 속도를 가짐
function solution(num1, num2) { return ~~(num1 / num2); }
JavaScript
복사

숫자 비교하기

정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.

생각하기 쉬운 풀이

function solution(num1, num2) { if ( num1 === num2 ) { return 1; } else { return -1; } }
JavaScript
복사

빠른 풀이

삼항 연산자 사용 !
function solution(num1, num2) { return num1 === num2 ? 1 : -1; }
JavaScript
복사

나이 계산하기

머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.

생각하기 쉬운 풀이

function solution(age) { return 2022 - age + 1; }
JavaScript
복사

빠른 풀이

별 차이는 없음 … 오히려 의미를 알기엔 위 풀이보다 어려울 수 있다는 점 참고 !!
function solution(age) { return 2023 - age; }
JavaScript
복사

각도기

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

생각하기 쉬운 풀이

제한 사항에 0 < angle ≤ 180이라고 명시 되어 있으므로 0도 미만 혹은 180 초과는 고려할 필요 X
function solution(angle) { if ( angle < 90 ) { return 1; } else if ( angle === 90 ) { return 2; } else if ( angle < 180 ) { return 3; } else { return 4; } }
JavaScript
복사

양꼬치

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총 얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

생각하기 쉬운 풀이

function solution(n, k) { // 먼저 서비스로 제공될 음료수에 대해 계산 if ( n >= 10 ) { k -= ~~(n/10); } return n*12000 + k*2000; }
JavaScript
복사

짝수의 합

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

생각하기 쉬운 풀이

function solution(n) { var result = 0; for ( var i=1 ; i<=n ; i++ ) { if ( i % 2 == 0 ) { result += i; } } return result; }
JavaScript
복사

빠른 풀이 1 : 반복 줄이기

function solution(n) { var result = 0; for ( var i=0 ; i<=n ; i+=2 ) { result += i; } return result; }
JavaScript
복사

빠른 풀이 2 : 수열 사용

function solution(n) { var half = Math.floor(n/2); return half*(half+1); }
JavaScript
복사

빠른 풀이 3 : method chaining 사용

function solution(n) { return Array(n) // n개의 원소를 가지는 빈 배열 생성 .fill() // 인자가 없으므로 배열이 모두 undefined로 채워짐 .map((_, i) => i + 1) // 각 요소를 i+1의 값으로 채움 ( _ = 값, i = index ) .filter((v) => v % 2 === 0) // 짝수 값 v만 필터링 .reduce((acc, cur) => acc + cur, 0); // 짝수 값의 누적 합을 계산, 0은 초기값 }
JavaScript
복사