티스토리 뷰
문제
카카오 2018 공채 - n진수 게임
10진수를 2-16 사이의 모든 진법으로 변환하는 문제이다!
풀이
- A라는 숫자를 n진법 수로 변환하려면❓
- 1. 몫이 0이 될때까지 A를 n으로 나눈다
- 2. 나머지를 밑에서부터 읽는다
- 위의 방법을 함수로 만들면 되는데, 주의할 점은 10이 넘는 수는 대문자 알파벳으로 변환해야 한다 -> 아스키코드 사용하기
- 튜브의 순서인 수만 뽑아서 리턴하면 완성!
public static String solution(int n, int t, int m, int p) {
String answer = "";
StringBuilder result = new StringBuilder();
for(int i=0; i<t*m; i++) {
if(i==0) result.append(i);
result.append(convert(n, i));
}
for(int i=p-1; i<result.length(); i=i+m) {
answer += result.substring(i, i+1);
if(answer.length()==t) break;
}
return answer;
}
// n진법 수로 변환
static String convert(int n, int i) {
StringBuilder sb = new StringBuilder();
while (i>0) {
int rem = i % n;
sb.append(rem >= 10 ? String.valueOf((char)('A' + (rem - 10))) : rem);
i /= n;
}
return sb.reverse().toString();
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 백준 5577 회전초밥 - 슬라이딩윈도우 (0) | 2020.09.09 |
---|---|
[Algorithm] 2019 카카오 인턴십 - 튜플 (Map 정렬하기) (0) | 2020.08.29 |
[Algorithm] 프로그래머스 2019 카카오 공채 - 후보키 (비트마스크) (0) | 2020.08.27 |
[Algorithm] 백준 1753 최단경로 - 다익스트라 알고리즘 (0) | 2020.06.16 |
[Java] Comparable과 Comparator를 이용해 객체 정렬하기 (0) | 2020.05.13 |