◇ 문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
- 124 나라에는 자연수만 존재합니다.
- 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
10진법 124나라 10진법 124나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
◇ 제한 조건
- n은 500,000,000이하의 자연수 입니다.
◇ 입출력 예시
| n | result |
| 1 | 1 |
| 2 | 2 |
| 3 | 4 |
| 4 | 11 |
◇ 초기 내용
※ [출처] 프로그래머스-코딩테스트 연습-문제명
※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.
class Solution {
public String solution(int n) {
String answer = "";
return answer;
}
}
◇ 풀이 과정
124나라의 숫자의 규칙은 이러하다.
| 10진수 | 124나라 | 10진수 | 124나라 | 10진수 | 124나라 | 10진수 | 124나라 | 10진수 | 124나라 |
| 1 | 1 | 4 | 11 | 7 | 21 | 10 | 41 | 13 | 111 |
| 2 | 2 | 5 | 12 | 8 | 22 | 11 | 42 | 14 | 112 |
| 3 | 4 | 6 | 14 | 9 | 24 | 12 | 44 | 15 | 114 |
Ex1) n = 5라면 12이다.
| 5/3 = 1 | 5%3 = 2 |
| 1/3 = 0 | 1%3 = 1 |
Ex2) n = 9이라면 24이다.
| 9/3 = 3 -> 2 ※값이 딱 나누어 떨어질땐 값을 1 감소 |
9%3 = 0(=4) ※0일땐 4로 변환 |
| 2/3 = 0 | 2%3 = 2 |
Ex3) n = 14라면 112이다.
| 14/3 = 4 | 14%3 = 2 |
| 4/3 = 1 | 4%3 = 1 |
| 1/3 = 1 | 1%3 = 1 |
※값을 밑에서 부터 읽어야하므로 현재문자열의 앞에 새로운 문자열을 추가하며 작성해야한다.
◇ 답안
더보기
class Solution {
public String solution(int n) {
String answer = "";
//n을 3으로 나눈 값을 저장할 변수
int value = n;
while(true){
//n을 3으로 나눈 나머지를 저장할 변수
int remainder = value%3;
//value를 3으로 나누어 value에 저장
value/=3;
//만약, 나머지가 0보다 크다면
if(remainder>0){
//그 나머지 값을 answer 문자열 앞에 붙여 answer에 저장
answer = Integer.toString(remainder) + answer;
}
//만약, 나머지가 0이라면(3의 나머지는 0, 1, 2뿐이다)
else{
//answer 문자열 앞에 4를 붙여 answer에 저장 후
answer = Integer.toString(4) + answer;
//value의 값을 1 감소시킨다.
value--;
}
//위 코드를 value가 0이 될때까지 반복한다.
if(value==0){
break;
}
}
return answer;
}
}
◇ 실행결과

◇ 출처
https://programmers.co.kr/learn/challenges
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
'코딩테스트 > Java' 카테고리의 다른 글
| [Level2] 영어 끝말잇기 답안 및 풀이 (0) | 2022.01.12 |
|---|---|
| [Level2] 짝지어 제거하기 답안 및 풀이 (0) | 2022.01.11 |
| [Level2] 프린터 답안 및 풀이 (0) | 2022.01.09 |
| [Level2] 더 맵게 답안 및 풀이 (0) | 2022.01.06 |
| [Level2] 카펫 답안 및 풀이 (0) | 2022.01.05 |
댓글