프로그래머스 양꼬치 자바스크립트 | parseInt() 문자열을 특정진수의 정수로 변환하여 반환하기

Chaeyeon Lee·2023년 5월 19일
0

🔅 1. 아이디어

우선 양꼬치를 10인분 미만으로 먹을 경우엔 서비스가 없기 때문에, 10을 기준으로 if문을 나눴다.
10인분 이상을 먹었을 경우 Math.floor(n/10)을 하여 서비스로 주어지는 음료수 개수를 구하고 먹은 음료수에서 서비스 음료수를 빼줬음.

🧑‍💻 2. 내 코드

function solution(n, k) {
    if(n<10){
        return 12000*n+2000*k;
    }
    else{
        let serve=Math.floor(n/10);
        return 12000*n+(2000*k-2000*serve);
    }
}

🐣 3. 개념

다른사람 풀이를 보니까 parseInt()라는 것을 많이 썼더라고.

function solution(n, k) {
    return n*12000 + k*2000 - parseInt(n/10)*2000
}

📌 parseInt()

위 함수는 '문자열 인자'를 파싱하여 특정 진수의 정수를 반환한다.

parseInt(string)
parseInt(string, radix)	

string: 파싱할 값으로, 문자열이 아닐 경우 ToString 추상연산을 이용해 문자열로 자동 변환한다. 문자열의 선행공백은 무시한다고 한다.

radix: string의 진수를 나타내는 2부터 36까지 정수다. 기본값이 10이 아님!!! 만약 Number자료형이 아닌 경우 Number로 변형한다.
만약 radix가 위 정수범위를 벗어나거나, 공백이 아닌 첫 문자를 숫자로 변환할 수 없는 경우 NaN을 반환한다.
radix가 사기인 게, 10으로 지정하면 10진수, 8이면 8진수로 변환한다는 것이다. 이거 덕분에 정수를 특정 진수로 변환하라는 문제에서 많은 이득을 보았다...^^

parseInt는 즉, 문자열을 특정 진수의 정수로 변환하여 반환한다는 것인데, 이때 정수값을 반환하기 위해 소수점 이하 값을 잘라낸다고 한다. 이 때문에 Math.floor()의 대체로 사용하는 경우도 많은 것 같은데 권장하지는 않는 사용법이다.
물론 해당 문제에서는 n, k의 범위가 작아서 parseInt를 써도 무리는 없다.

부호도 인식하는데, 부호를 인식하게 되면(+, -) 부호를 제거하고 나머지 문자열에 대해 숫자 파싱을 진행한다.


출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt

profile
프론트엔드 개발자 지망생

0개의 댓글