devlog_owen
[프로그래머스] 3진법 뒤집기 본문
문제
처음에는 이렇게 생각했다.
10진법수 n을 3으로 몫이 0이 될때까지 계속 나눔
3으로 나눌때마다 나머지는 배열로 push
배열 뒤집고 다시 이걸 10진법으로 바꿈
근데 반복문도 좋지만 이것보다 좀더 간단한 방법이 없을까하면서 구글링을 하다 괜찮은 방법을 발견했다.
나의 풀이
function solution(n) {
let samjin = n.toString(3);
let revsam = samjin.split('').reverse().join('')
let answer = parseInt(revsam,3)
return answer
}
1. 주어진 숫자 n을 3진수로 변환
let samjin = n.toString(3);
2. 3진수로 변환한 문자열 samjin 을 split ('') 으로 문자단위로 분리하고 reverse 메서드로 문자열을 뒤집고 join ('')메서드로 뒤집힌 배열을 다시 문자열로 결합시킴.
let revsam = samjin.split('').reverse().join('')
3. 뒤집힌 3진수 문자열을 10진수로 변환시킴, 그리고 answer 반환
let answer = parseInt(revsam,3)
return answer
}
toString(n)과 parseInt(n)를 처음 알게 되었다.
toString(n)은 10진법 수를 n진법으로 바꾸고 싶을때 쓰는 함수다.
반대로 parseInt(n진법수,n)은 n진법 수를 10진법으로 바꿀때 쓰는 함수다.
[JavaScript] 진수변환, toString(), parseInt()
자바스크립트 문제를 풀다가 10진수를 2진수로, 2진수를 10진수로 바꿔야 할 상황이 생겼다. 이를 해결하기 위한 함수는 toString()과 parseInt()다. 둘의 차이는 10진수를 다른 수로 변환시키는가, 다른
jae04099.tistory.com
다른 사람 풀이
const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
비슷하지만 더 간단해서 들고온 코드. ...n.toString(3)은 생각못했다. ...을 사용하면 바로 배열로 변환된다.
회고
스프레드 연산자 공부하기
'algorithm > (js)프로그래머스' 카테고리의 다른 글
[프로그래머스] 최소직사각형 (0) | 2023.11.05 |
---|---|
[프로그래머스] 삼총사 (0) | 2023.11.05 |
[프로그래머스] 예산 (0) | 2023.11.05 |
[프로그래머스] 같은 숫자는 싫어요 (0) | 2023.11.02 |
[프로그래머스] 최대공약수와 최소공배수 (1) | 2023.11.02 |