ALGORITHM/PROGRAMMERS
[프로그래머스] n진수 게임 (2018 KAKAO BLIND RECRUITMENT)
0298
2021. 2. 11. 18:45
programmers.co.kr/learn/courses/30/lessons/17687
코딩테스트 연습 - [3차] n진수 게임
N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0
programmers.co.kr
2021-02-11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import java.util.ArrayList;
public class Solution17687 {
public static ArrayList<String> list;
public static String nu[] = {"A", "B", "C", "D", "E", "F"};
public static void make(int jinbub, int done) {
list.add("0");
loop:for (int i = 1; i < done; i++) {
int num = i;
String tmp = "";
while (num > 0) {
int re = num % jinbub;
if(re >= 10) tmp = nu[re-10] + tmp;
else tmp = re + tmp;
num /= jinbub;
}
for (int k = 0; k < tmp.length(); k++) {
list.add(String.valueOf(tmp.charAt(k)));
if (list.size() >= done) break loop;
}
}
}
public static String solution(int n, int t, int m, int p) {
String answer = "";
list = new ArrayList<>();
make(n, (t - 1) * m + p);
for (int i = p - 1; i < list.size(); i += m) {
answer += list.get(i);
}
return answer;
}
public static void main(String[] args) {
int n = 8; // 진법
int t = 100; // 미리 구할 숫자의 갯수
int m = 20; // 게임에 참가하는 인원
int p = 3; // 튜브의 순서
System.out.println(solution(n, t, m, p));
}
}
|
cs |
#문제풀이
n진수를 얼마만큼 구하는지가 문제의 핵심이었던 것 같다. (t-1)*m+p만큼 구했지만, 어차피 구할 때 for문에서 i+=m만큼씩 체크할 거라서, t*m으로 해도된다.