[Level5]124나라의 숫자
by EastGlow
문제
1,2,4 세 개의 숫자만 쓰는 124나라가 있습니다.
124나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
- 10진법의 1 → 1
- 10진법의 2 → 2
- 10진법의 3 → 4
- 10진법의 4 → 11
- 10진법의 5 → 12
- 10진법의 6 → 14
- 10진법의 7 → 21
10진법의 수 N이 입력될 때, 124나라에서 쓰는 숫자로 변환하여 반환해주는 change124 함수를 완성해 보세요. 예를 들어 N = 10이면 “41”를 반환해주면 됩니다.
리턴 타입은 문자열입니다.
풀이 1
class OneTwoFour {
public String change124(int n) {
String answer = "";
int rmd;
while(n>0){
rmd = n%3;
n = n/3;
if(rmd == 0){
n -= 1;
rmd = 4;
}
answer = rmd + answer;
}
return answer;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
OneTwoFour oneTwoFour = new OneTwoFour();
System.out.println(oneTwoFour.change124(10));
}
}
레벨5 문제인데 레벨4보다 쉬웠던 것 같다. 언뜻 보기에 3으로 나누고 그 나머지와 몫을 이용하여 푸는 문제 같아서 직접 10까지 1,2,4로 이루어진 숫자를 구해보았다.
루프가 돌 때마다 나머지(rmd)가 하나씩 더해져서 정답이 완성된다. 10을 예로 들자면, 처음 루프돌 때 나머지가 “1”이 나오게 된다. 두번째 루프에서는 “0”이 나온다. 이 문제에서는 “0”이 “4”로 대체되어 나왔다고 생각하면 쉽게 풀리는 문제인 듯 하다.
나처럼 머릿속으로 이해가 잘 되지 않는 사람들은 직접 일정 수까지의 1,2,4 숫자를 써가며 구해보고 눈으로 확인하면서 풀면 쉽게 풀 수 있을거라 생각된다.
Subscribe via RSS