n진수 게임

이준경·2021년 5월 27일
0

<나의풀이>

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
44
45
46
47
48
49
50
51
52
53
54
55
56
class Solution {
    public String solution(int n, int t, int m, int p) {
        int num= m*(t-1)+p;
        int num1=m-p;
        String answer = "";
        String s = snum(n,t,m,p);
        System.out.println(s);
 
        for(int i = p-1; i<num; i+=m){
            answer+=s.charAt(i);
        }
        return answer;
    }
 
    public String snum(int n, int t, int m, int p){
        int num= m*(t-1)+p;
        String s ="";
 
        int i=2;
        while(true){
            String ss ="";
            for(int j=i; j>0; j/=n){
                    String ch="";
                    switch(j%n){
                        case 10:
                            ch="A";
                            break;
                        case 11:
                            ch="B";
                            break;
                        case 12:
                            ch="C";
                            break;
                        case 13:
                            ch="D";
                            break;
                        case 14:
                            ch="E";
                            break;
                        case 15:
                            ch="F";
                            break;
                        default :
                            ch=Integer.toString(j%n);
                    }
 
                ss=ch+ss;
 
            }
            s+=ss;
            if(s.length()>=num-2)
                    return "01"+s;
            i++
        }
    }
}
cs
  1. 먼저 String을 반환 하는 snum 함수를 만듬. 반환값은 n진수로 게임을 진행할 때 나오는 답의 집합임.
  2. num은 대상이 t개의 답을 얻기위해서 필요한 최소한의 string 길이임.
  3. i는 게임중 증가하는 수를 의미함 0,1은 모든 진법에서 값이 같으므로 나중에 더해줌.
    i가 1씩 증가 할때 마다 진법 계산을 통해 한자리씩 구하고 ch에 대입함.
    ss에 ch+ss를 계속 더해나가고 i의 진법 계산이 모두 끝나 만들어진 ss를 이용하여 최종적으로 s+=ss 를 함.
    이를 반복하며 s의 길이가 num-2보다 크거나 같아지면 반복을 종료하고 01+s를 리턴함
  4. 리턴받은 s를 이용하여 대상의 순번에 맞는 s의 문자열을 answer에 추가 대입 함.
  5. 이후 answer 반환

0개의 댓글

관련 채용 정보