본문 바로가기
프로그래머스

프로그래머스 124 나라의 숫자

by 콩순이냉장고 2021. 7. 28.

문제 URL : https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

 

문제접근법: 

10진수 t를 n진법으로 변환할때 스택을 이용하는게 일반적이죠?

하지만 스택보단 vector를 이용해서 거꾸로 읽으면 n진법의 수가 됩니다.

이것까진 쉽습니다.

 

하지만 이문제는 124만 이용하여 모든수를 표현하는데

3개의 숫자만 이용하니 3진법을 용하는것은 자명합니다.

하지만  3진법은

1->1   ,2->2 , 3->10 이됩니다.

3에서 3으로 나눌경우 몫은 1이고 나머지가 0이되며 그몫1에서 또 3으로 나눠서 몫이0 나머지가 1이 나오기에

10이됩니다.

하지만 문제는

1->1 ,2->2 ,3->4

3에서 나눠지는경우 몫이 1이지만 길이를 1칸줄이기위해서 그몫에서 1을 제거하면 더이상 나눠질수없기때문에 4가나옵니다.

이런원리로 3에서나눠지는경우 몫에서 1을 제거하면 답이 나옵니다.

 

소스코드:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;
 
string solution(int n) {
    string answer = "";
    while (n) {
        if (n % 3 == 0) {
            answer += to_string(4);
            n /= 3;
            n--;
        }
        else {
            answer += to_string(n % 3);
            n /= 3;
        }
        
    }
    reverse(answer.begin(), answer.end());
    return answer;
}
cs

 

 

궁금한점 혹은 모르는점 어떤질문이든 댓글은 언제나 환영입니다.