Seren dev's blog

https://school.programmers.co.kr/learn/courses/30/lessons/17687

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

숫자를 n진법으로 변환해야 하고, m명 중 p번째로 말할 숫자를 t개 구해야 한다.

 

숫자를 n진법으로 변환할 때는 Integer.toString(int i, int radix)를 사용하고

m명 중 p번째로 말할 숫자를 구할 때는 (전체 길이 % m == p)인 경우이다. 이 때 m == p일 때는 p를 미리 0으로 변경한다.

 

또한 Integer.toString()으로 변환하면 문자의 경우 소문자로 변환된다. 따라서 이를 대문자로 변환하는 과정을 거쳐야 한다.

코드

class Solution {
    public String solution(int n, int t, int m, int p) {
        if (m == p) {
            p = 0;
        }
        
        String answer = playGame(n, t, m , p);
        return answer.toUpperCase();
    }
    
    static String playGame(int n, int t, int m, int p) {
        StringBuilder sb = new StringBuilder();
        
        int len = 0; // 전체 숫자들의 길이
        int cnt = 0; // 튜브가 현재까지 말한 숫자 갯수
        int number = 0; // 0부터 시작
        
        while (cnt < t) {
            String str = Integer.toString(number, n); // 현재 숫자를 n진법 숫자 문자열로 변환
            
            for (int i = 0; i < str.length(); i++) {
                len++;
                if (len % m == p) {
                    sb.append(str.charAt(i));
                    cnt++;
                    
                    if (cnt == t) {
                        return sb.toString();
                    }
                }
            }
            number++;
        }
        
        return sb.toString();
    }
}
728x90
profile

Seren dev's blog

@Seren dev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!