문제 주소
https://school.programmers.co.kr/learn/courses/30/lessons/12899
문제 설명
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은 50,000,000이하의 자연수 입니다.
입출력 예
n result
1 | 1 |
2 | 2 |
3 | 4 |
4 | 11 |
※ 공지 - 2022년 9월 5일 제한사항이 수정되었습니다.
제출 코드
import java.util.*;
class Solution {
public String solution(int n) {
String s = new String();
if(n==1){
return "1";
}
while(n>0){
n=n-1;
int mod = n%3;
if(mod==0){
s = 1+s;
}else if(mod==1){
s = 2+s;
}else if(mod==2){
s = 4+s;
}
n=n/3;
}
return s;
}
}
코드 설명
3진법인데 이제 012가 아니고 124인 느낌임
3→10→4
4→ 3진법으로 11 →11
5→ 12 → 12
6→ 20 →14
4-1 = 3 → 10 →21 그러나 실제는 11…
5-1 = 4→ 11 → 12 1을 2로 치환
6-1 →5→12 → 14 2를 4로 치환
7-1→6→20→21 0을 1로 치환
하지말고 2를 빼면 맞다
자릿수가 올라갈수록 자릿수만큼 빼준다음에 012를 124로 치환하면 맞게 되는 규칙이 보여서 그렇게 풀었다
그래서 while의 첫번째 줄에서 n=n-1을 항상 하고 있다
'Coding Test' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 찾기 (0) | 2024.06.19 |
---|---|
[백준] 크게 만들기 (0) | 2024.06.16 |
[프로그래머스] 파일명 정렬 (1) | 2024.06.03 |
[프로그래머스] 프렌즈4블록 (1) | 2024.06.03 |
[프로그래머스] 메뉴 리뉴얼 (1) | 2024.06.03 |