숫자로만 이루어진 문자열 n_str
이 주어질 때, n_str
을 정수로 변환하여 return하도록 solution 함수를 완성해주세요.
n_str
≤ 5n_str
은 0부터 9까지의 정수 문자로만 이루어져 있습니다.n_str | result |
---|---|
"10" | 10 |
"8542" | 8542 |
입출력 예 #1
입출력 예 #2
const solution = (n_str) => Number(n_str);
/*
내가 처음 작성한 코드이다.
Number(n_str)처럼 함수로 사용하면 문자열이나 다른 값을 Number 타입으로 변환한다.
만약 만약 인수를 숫자로 변환할 수 없으면 NaN을 리턴한다.
*/
const solution = (n_str) => ~~n_str;
/*
여기서 사용된 ~~는 비트 NOT 연산자이다. 이 연산자는 피연산자의 각 비트를 반전시키지만,
두 번 적용하면 원래의 값으로 돌아오게 된다.
JavaScript에서 비트 NOT 연산자를 숫자가 아닌 값에 적용하면 해당 값이 먼저 숫자로 변환된다.
그러므로 ~~를 문자열에 적용하면 해당 문자열이 숫자로 변환되게 된다.
*/
const solution = (n_str) => Math.floor(n_str);
/*
Math.floor() 함수는 주어진 숫자보다 크지 않은 가장 큰 정수를 반환한다.
그런데 JavaScript에서는 문자열이 숫자로만 이루어져 있다면, Math.floor()와 같은 수학 함수가
암시적으로 해당 문자열을 숫자로 변환한다.
따라서 Math.floor(n_str)는 먼저 n_str을 숫자로 변환하고, 그 결과에 Math.floor()를 적용하여
소수점 아래를 버린다.
하지만 주어진 문제에서는 n_str이 항상 정수 값을 갖는다고 했으므로, 사실상 Math.floor()의
동작은 불필요하며 단순히 타입 변환이 일어나게 된다.
*/
const solution = (n_str) => parseInt(n_str);
/*
parseInt() 함수는 주어진 문자열을 정수로 변환한다.
문자열에서 숫자를 파싱하며, 파싱이 불가능한 문자가 나오면 그 시점까지의 숫자만 반환한다.
하지만 여기서는 n_str이 항상 숫자만 포함하므로 전체 문자열이 정수로 변환된다.
SOLUTION2, SOLUTION3의 ~~나 Math.floor()보다 더 직관적이고 명확하며 일반적으로
JavaScript에서 자주 사용되는 방식이다.
*/