본문 바로가기

c++/프로그래머스 1 Lv

[프로그래머스] 3진법 뒤집기

문제

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

제한사항

n은 1 이상 100,000,000 이하인 자연수입니다.

문제 링크

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

 

프로그래머스

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

programmers.co.kr

풀이[c++]

using namespace std;

int solution(int n) {
    int answer = 0;
    while(n){
        answer *=3;
        answer+=n%3;
        n /=3;
    }
    return answer;
}

어떤 숫자의 n진법 구하려면 n으로 나눈 나머지 값을 뒤에서 쌓아주는 것이다.

예) 45를 3진법으로 만들기 45%3= 0,   15%3=0,   5%3=2,  1%3=1 이므로 1200이다.

앞뒤로 뒤집고 십진수로 만들기니까 0021을 십진수로 만들면 된다.

0 × 3³ + 0 × 3² + 1 × 3¹ + 0 × 1 이므로 while문을 써서 만들면 된다.