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
'Algorithm 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.2 : 최솟값 만들기 - 자바[Java] (0) | 2024.03.18 |
---|---|
[프로그래머스] Lv.2 : [3차] 압축 - 자바[Java] (0) | 2024.02.18 |
[프로그래머스] Lv.2 : 삼각 달팽이 - 자바[Java] (0) | 2024.02.16 |
[프로그래머스] Lv.2 : 다리를 지나는 트럭 - 자바[Java] (0) | 2024.02.15 |
[프로그래머스] Lv.2 : [3차] 방금 그 곡 - 자바[Java] (0) | 2023.10.12 |