티스토리 뷰

프로그래머스 17687번 - [3차]n진수 게임

프로그래머스 17687번 - https://programmers.co.kr/learn/courses/30/lessons/17687

 

요구사항

1. 숫자를 0부터 시작해서 차례대로 말하며, 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 

2. 난이도를 올려 숫자를 n진수로 변환하여 한 숫자씩 말할 때, 튜브가 p번째 순서에 말해야 하는 숫자 t개를 공백 없이 차례대로 나타낸 문자열을 반환하라. (단, 10~15는 각각 대문자 A~F로 출력하라.)

 

요구사항 분석 및  풀이과정

1.  튜브가 p번째 순서부터 말해야 하는 숫자 t개를 미리 구하기 위하여, 그냥 전원(m명)이 t개씩 말할 때의 수들을 미리 모두 구합니다.

2. 1번에서 구한 경우에서 p번째 수(인덱스로는 p-1)부터, 다음 턴(전원 m명이 모두 말한 후)에 말할 수를 순차적으로 문자열로 출력하여주면 됩니다.

 

정수를 n진법으로 표현한 문자열을 얻기 위하여 Integer.toString(int number, int radix) 사용

 

*주의 : A ~ F 는 대문자로 출력하여야 한다*

 

소스코드 작성

class Solution {
    
    public String solution(int n, int t, int m, int p) {
        StringBuilder sb = new StringBuilder(m * t);
        StringBuilder result = new StringBuilder();

        int number = 0;
        while(sb.length() < m * t) {
            sb.append(Integer.toString(number++, n));
        }

        for(int i = p - 1; i < m * t; i += m) {
            result.append(sb.charAt(i));
        }
        
        return result.toString().toUpperCase();
    }
}

 

결과

 

소스코드 깃허브 주소

링크

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함