https://programmers.co.kr/learn/courses/30/lessons/17687
1. 유형
재귀, 구현
2. 시뮬레이션
- 0부터 수를 1씩 증가
- 수를 n진법으로 전환
- 튜브의 순서에 맞는 변환된 n진법수를 선택
- 위를 튜브가 t개 선택할 때까지, 반복
3. 코드
- 이진법 전환 코드
- 탐색코드
class Solution {
public String solution(int n, int t, int m, int p) {
String answer = "";
int index = 0;
int turn=1;
out:while(true){
String binary = getBinary(index, n);
for(int i=0; i<binary.length(); i++){
if(turn == p){
answer+=binary.charAt(i);
p+=m;
}
if(answer.length() == t)
break out;
turn++;
}
index++;
}
return answer;
}
static String getBinary(int index, int n){
int mock = index/n;
String na = index%n >= 10 ? getNa(index%n) : String.valueOf(index%n);
if(mock == 0){
return na;
}
return getBinary(mock, n)+na;
}
static String getNa(int na){
switch(na){
case 10:
return "A";
case 11:
return "B";
case 12:
return "C";
case 13:
return "D";
case 14:
return "E";
case 15:
return "F";
case 16:
return "G";
default:
return "";
}
}
}
4. 느낀점
n진법에 대해서 확실히 알았으며,
전역변수 없이 재귀의 리턴값만을 활용하는 법을 터득
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[devmoon]프로그래머스 - (Java) 섬 연결하기 (0) | 2021.07.01 |
---|---|
[devmoon]프로그래머스 - (Java)외벽 점검 (0) | 2021.06.27 |
[devmoon] 프로그래머스 - (Java)이진 변환 반복하기 (0) | 2021.06.23 |
[devmoon] 프로그래머스 - (java)점프와 순간 이동 (0) | 2021.06.23 |
[devmoon]프로그래머스 - 방문 길이 (0) | 2021.06.22 |