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으로 해도된다.