본문 바로가기

Programmers/Level2

[3차] n진수 게임

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
class Solution {
    // 진수 변환기
    public static String getConversionNumber(int n, int num) {
        StringBuilder sb = new StringBuilder();
        if (num == 0)
            return "0";
        while (num != 0) {
            if (num % n >= 10) {
                sb.append((char) (55 + num % n));
            } else {
                sb.append(num % n);
            }
            num /= n;
        }
        return sb.reverse().toString();
    }
    
    public String solution(int n, int t, int m, int p) {
        String answer = "";
        StringBuilder sb = new StringBuilder();
        int cnt = 0, num = 0;
 
        // 지정 횟수만큼 고르면 종료
        while (t > 0) {
            String getNum = getConversionNumber(n, num++);
            for (int i = 0; i < getNum.length(); i++) {
                cnt++;
                // 자기 차례 확인
                if (cnt % m == p || m == p && cnt % m == 0) {
                    sb.append(getNum.charAt(i));
                    t--;
                }
                if (t <= 0)
                    break;
            }
        }
        answer = sb.toString();
        return answer;
    }
}
cs

n진수 변환 함수를 작성해보는 좋은 경험이었다.

'Programmers > Level2' 카테고리의 다른 글

최솟값 만들기  (0) 2021.08.02
다음 큰 숫자  (0) 2021.08.01
최댓값과 최솟값  (0) 2021.07.31
이진 변환 반복하기  (0) 2021.07.31
올바른 괄호  (0) 2021.07.31