본문 바로가기
Algorithm/Programmers

[Programmers] 3진법 뒤집기(JavaScript)

by 백승전 2022. 7. 23.

 

알림

 

본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.

 

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/68935

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

자연수 n이 매개변수로 주어집니다.
n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

 

코드

 

function solution(n) {
    return parseInt(n.toString(3).split('').reverse().join(''), 3);
    // return 숫자(자연수.3진법 문자열.나누기.뒤집기.합치기, 3진법임);
}

 

풀이

 

문제를 해결하기 위해선 다음과 같은 과정을 거쳐야 합니다.

 

1. 자연수를 3진법으로 변환

2. 뒤집기

3. 3진법을 자연수로 변환

 

2번의 경우, 자르고(split()), 뒤집고(reverse()), 합치면(join()) 되기 때문에 이 문제의 관건은 자연수 > 3진법 > 자연수로 변환하는 것입니다.

 

자연수를 3진법으로 변환하기 위해선 매개변수 n을 3으로 나눈 나머지들의 역순을 구하면 되는데요. 문제에선 3진법을 다시 뒤집으라 했기 때문에 3으로 나눈 나머지를 순차적으로 배열에 담아주면 됩니다만, 해당 방법은 좀 복잡하단 생각이 들었습니다.

 

그래서 분명 자바스크립트 내에 메서드를 사용해서 쉽게 사용할 수 있을 것 같아 서치한 결과 toString()과 parseInt()를 사용해 쉽게 해결할 수 있었음을 배웠습니다.

 

toString(n)

toString()는 숫자를 문자열로 변환해 주는데요, 다음과 같이 작성하면 n진법으로 반환해 줍니다.

지금과 같은 상황에서 3진법으로 변환하라 하였으니, n.toString(3)으로 문제를 풀이할 수 있습니다.

 

parseInt(string, n)

parseInt()는 문자열을 숫자로 변환해 주는데요, 다음과 같이 작성하면 n진법의 string으로 숫자로 반환해 줍니다.

마찬가지로, 현재 변수의 담긴 문자는 3진법이기 때문에, parseInt(string, 3)으로 문제 풀이가 가능합니다.

댓글