n진수 게임

Seongjin Jo·2023년 7월 20일
0

프로그래머스 LV2

목록 보기
21/28

문제

풀이

import java.util.*;

class Solution {   
    static StringBuilder sb = new StringBuilder();
    static StringBuilder answer = new StringBuilder();
    
    public String solution(int n, int t, int m, int p) {
        
        // 무조건 한번에 한 숫자만 말할수있다.
        // 다음 숫자가 12면 1,2 이렇게 말해야한다.
        
        // 0 [1] 1 [0] 1 [1] 1 [0] 0 ~ 
        for(int i=0; i<=t*m; i++){
            sb.append(Integer.toString(i,n));
        }
        
        for(int i=p-1; answer.length()<t; i+=m){
            char ctr = sb.charAt(i);
            answer.append(ctr);
        }
              
        return answer.toString().toUpperCase();
    }
}

처음에 문제 이해가 잘 안됐는데 그래도 금방 이해해서 바로 문제를 해결했다.
처음에 StringBuilder안썻는데 시간초과 떠서 사용했다. 이런 문자열 문제는 이론상 완벽하다 싶은데 시간초과뜨면 StringBuilder 쓰면된다.

그리고 진법변환 명심하자.

Integer.toString(int 타입, n 진법);

이렇게 써주면된다.

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

글 잘 봤습니다, 많은 도움이 되었습니다.

답글 달기