반응형
이번에 풀어본 문제는 124나라의 숫자(12899번)문제를 풀어보았다. 풀어본 모든 문제를 포스팅 하는 것은 아니지만.... 어렵지 않은 문제인데 너무 헤맸다....(3시간이나 걸렸다...) 물론 나 홀로 혼돈의 미로 속으로 빠졌기 때문이다...
코딩테스트 연습 > 연습문제 > 124 나라의 숫자 programmers.co.kr/learn/courses/30/lessons/12899 |
문제 : 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
문제를 보고 2가지를 떠올려서 코딩을 하였다.(누구나 쉽게하는 생각..)
1. 10진법을 3진법 전환
2. 진법 변환 시 나누기, 나머지로 1, 2, 4로 치환
정말 저 늪에 빠져서 2시간을 헤매고 두 가지를 깨달았다.
char chT[3] = { '1' , '2' , '4' };
char ConvertNmg(int nNmg)
{
int nIdx = 0;
if (nNmg == 0)
nIdx = 2;
else
nIdx = nNmg - 1;
return chT[nIdx];
}
string solution(int n)
{
string answer = "";
int nDiv = n;
while (nDiv > 0)
{
int nNmg = nDiv % 3;
answer = ConvertNmg(nNmg ) + answer;
cout << nDiv << "\t" << nNmg << "\t" << answer << endl;
//! 0이 제외되기때문에 경계에서는 한번 덜 처리해준다.
if (nNmg == 0)
nDiv = nDiv / 3 - 1;
else
nDiv = nDiv / 3;
}
return answer;
}
이 문제를 풀면서 꼼꼼하지 못한 나를 반성하는 계기가 되었다. 간단한(?) 문제 속에 두 가지 트릭만 발견하면 어렵진 않은 문제인데....
반응형
'C, C++, C# > Algorithm' 카테고리의 다른 글
알고리즘 종류 (0) | 2020.10.13 |
---|---|
프로그래머스 - 정수 삼각형 (0) | 2020.10.13 |
DP(Dynamic Programming) - 동적 계획법 (0) | 2020.10.13 |
timb 밀리초 성능 시간 측정 (0) | 2016.11.28 |
피보나치 수열 반복형 (0) | 2016.11.23 |