티스토리 뷰
프로그래머스 17687번 - [3차]n진수 게임
요구사항
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();
}
}
결과
소스코드 깃허브 주소
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[알고리즘]프로그래머스 12938번 - 최고의 집합 (0) | 2022.02.17 |
---|---|
[알고리즘]프로그래머스 12981번 - 영어 끝말잇기 (0) | 2022.02.10 |
[알고리즘]프로그래머스 62048번 - 멀쩡한 사각형 (0) | 2022.02.09 |
[알고리즘]프로그래머스 77885번 - 2개 이하로 다른 비트 (0) | 2022.02.06 |
[알고리즘]프로그래머스 77485번 - 행렬 테두리 회전하기 (0) | 2022.02.05 |