두 수의 합
0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
- 1 ≤ a의 길이 ≤ 100,000
- 1 ≤ b의 길이 ≤ 100,000
- a와 b는 숫자로만 이루어져 있습니다.
- a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.
function solution(a, b) {
return String(BigInt(`${a}`) + BigInt(`${b}`));
}
처음에 BigInt() 대신, 습관적으로 Number()를 사용했는데, 계속 테스트를 통과하지 못했다. 조건을 보니 정수의 길이가 무척 길다. 그래서 BigInt()로 사용하였다.
Q. 적은 수를 계산할 때도, BigInt()를 사용하는 것이 Number()를 사용하는 것과 동일할까?
A. 성능에 대한 자료는 없지만, Number()과의 차이점을 파악할 수 있었다.
BigInt()
- 소수점 결과를 포함하는 연산을 할 경우, 소수점 이하는 사라진다.
- 내장 Math 객체의 메서드와 함께 사용할 수 없다.
홀짝에 따라 다른 값 반환하기
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
- 1 ≤ n ≤ 100
function solution(n) {
let oddSum = 0;
let evenSum = 0;
for(let i = 1; i <= n; i++) {
if(i % 2 !== 0) oddSum += i;
else if(i % 2 === 0) evenSum += i**2;
}
return n % 2 !== 0 ? oddSum : evenSum;
}
// 다른 사람의 풀이
function solution(n) {
if(n % 2 === 1) return ((n+1) / 2)**2;
else return (n*(n+1)*(n+2)) / 6;
}
특정 정수의 이하의 수를 가지고 계산하는 것이기에, 반복문의 조건을 n이하로 잡는다.
반복문을 돌면서 짜수는 짝수끼리, 홀수는 홀수끼리 계산할 수 있는 변수를 생성하여 조건에 맞는 계산식을 넣어준다. 최종적으로 n의 짝수, 홀수 여부에 따라 결과값을 선택하도록 만든다.
<다른 사람의 풀이에 대한 이해>
수학 공식.. 홀수일 때, 홀수의 합 / 짝수는 거듭 제곱의 합
무척 오랜만에 본다. 낯익은데, 낯설었다. 프로그래밍할 때 수학을 알면 좋구나 싶었다..
'코딩테스트 > 프로그래머스 0단계 - 기초 트레이닝' 카테고리의 다른 글
프로그래머스 0단계 - 조건에 맞게 수열 변환하기 3 / A 강조하기 (0) | 2024.04.01 |
---|---|
프로그래머스 0단계 - 문자열 섞기, 문자열로 변환 (0) | 2024.03.30 |
프로그래머스 0단계 - 소문자로 바꾸기, 대문자로 바꾸기 (0) | 2024.03.30 |
프로그래머스 0단계 - 공배수, 더 크게 만들기 (0) | 2024.03.29 |
프로그래머스 0단계 - n의 배수, flag에 따른 값, 문자열의 앞의 n글자, 정수 부분 (0) | 2024.03.28 |
댓글