📕 문제 설명
0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
⭐ 제한사항
- 1 ≤ a의 길이 ≤ 100,000
- 1 ≤ b의 길이 ≤ 100,000
- a와 b는 숫자로만 이루어져 있습니다.
- a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.
💻 입출력 예
a | b | result |
"582" | "734" | "1316" |
"18446744073709551615" | "287346502836570928366" | "305793246910280479981" |
"0" | "0" | "0" |
📚 입출력 예 설명
입출력 예 #1
- 예제 1번의 a, b는 각각 582, 734이고 582 + 734 = 1316입니다. 따라서 "1316"을 return 합니다.
입출력 예 #2
- 예제 2번의 a, b는 각각 18446744073709551615, 287346502836570928366이고 18446744073709551615 + 287346502836570928366 = 305793246910280479981입니다. 따라서 "305793246910280479981"을 return 합니다.
입출력 예 #3
- 예제 3번의 a, b는 각각 0, 0이고 0 + 0 = 0입니다. 따라서 "0"을 return 합니다.
😊 나의 답변
function solution(a, b) {
const numA = BigInt(a);
const numB = BigInt(b);
return String(numA + numB);
}
처음엔 단순하게 String(+a + +b)
로 제출했는데, 테스트케이스 2번에서 오답처리 됐다.
테스트 케이스 2번의 경우 Number로 표현할 수 있는 값의 범위를 넘어서서, 넘어간 자리수는 0으로 채워지는 것...!
이를 해결하기 위해선 BigInt 타입을 사용해야 한다!
📌 BigInt
: 자바스크립트에서 기본적으로 제공하는 숫자 타입인 Number가 표현할 수 있는 범위를 넘어서는 정수를 처리하기 위해 도입된 새로운 숫자 타입 BigInt는 뒤에 n 또는 N을 붙여서 숫자를 표현한다.
const bigIntNumber = 9007199254740992n; // BigInt를 생성할 때는 숫자 뒤에 n 또는 N을 붙여서 표현
console.log(bigIntNumber); // 출력: 9007199254740992n
728x90
반응형
'프로그래머스 > Lv. 0 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스] Lv.0 정수를 나선형으로 배치하기 / JS (0) | 2023.08.08 |
---|---|
[프로그래머스] Lv.0 그림 확대 / JS (0) | 2023.08.08 |
[프로그래머스] Lv.0 배열의 원소 삭제하기 / JS (0) | 2023.08.06 |
[프로그래머스] Lv.0 배열의 길이를 2의 거듭제곱으로 만들기 / JS (0) | 2023.08.05 |
[프로그래머스] 코딩 기초 트레이닝 Day 16 / JS (0) | 2023.08.04 |