기계는 거짓말하지 않는다

[Programmers] 124 나라의 숫자 본문

Programming Test

[Programmers] 124 나라의 숫자

KillinTime 2021. 4. 29. 12:43

프로그래머스 - 124 나라의 숫자 문제입니다.

 

문제

숫자 3개가 끝이므로 3진법을 생각했습니다. 3진법에서 0, 1, 2로 표현되고 정확히 3으로 나누어 진다면 4로 바꾸면 되겠다는 생각을 했습니다. 재귀함수를 이용하여 3진법 string을 거꾸로 출력하면서 조건을 답니다. 주의점은 6, 9처럼 정확히 나누어 떨어질 때 3진법에서는 20, 100이 되지만 문제는 1이 적기 때문에 1을 뺀 후의 몫을 붙입니다.

 

#include <string>
#define NOTATION 3
using namespace std;

string chg(int n) {
    int num;
    num = n % NOTATION == 0 ? 4 : n % NOTATION;		// 나머지가 0일 경우 4로 치환
    
    if(NOTATION >= n) {		// 마지막 몫
        return NOTATION == n ? to_string(num) : to_string(n);
    }
    
    if(n % NOTATION == 0) n -= 1;	// 정확히 나누어질 때 1을 뺌
    return chg(n / NOTATION) + to_string(num);
}

string solution(int n) {
    string answer = "";
    
    answer = chg(n);
    return answer;
}

'Programming Test' 카테고리의 다른 글

[Programmers] 이진 변환 반복하기  (0) 2021.04.30
[Programmers] 캐시  (0) 2021.04.30
[Programmers] 튜플  (0) 2021.04.27
[Programmers] 야근 지수  (0) 2021.04.26
[Programmers] 단어 변환  (0) 2021.04.25
Comments