프로그래머스 - [3차] N진수 게임
https://school.programmers.co.kr/learn/courses/30/lessons/17687
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명

입력 형식
진법 n, 미리 구할 숫자의 개수 t, 게임에 참가하는 인원 m, 튜브의 순서 p가 주어진다.
- 2 ≤ n ≤ 16
- 0 < t ≤ 1000
- 2 ≤ m ≤ 100
- 1 ≤ p ≤ m
출력 형식
튜브가 말해야 하는 숫자 t개를 공백 없이 차례대로 나타낸 문자열. 단, 10~15는 각각 대문자 A~F로 출력한다.
💡 아이디어
- p번째 사람이 t번 말할 수 있을 때까지 전체 숫자를 구해서, p번째 사람의 숫자를 뽑아내는 방식으로 풀어보았습니다.
📖 풀이 과정
1. p번째 사람이 t번 말할 수 있을 길이가 될 때까지 0부터 차례로 n진수로 바꿔 한 글자씩 전체 문자열에 넣습니다.
String total="";
//전체 문자열 길이를 (p가 t번 말할 수 있을 때)까지 구한다
// ex - (2,4,2,1)
// 0*, 1, 1*, 0, 1*, 1, 1*, 0, 0 -> *은 p번째 사람이 말한 숫자
while(total.length()<p+m*(t-1)){
total+=Integer.toString(num++,n).toUpperCase(); //num을 n진법으로 나타내 string에 저장.
}
2. 전체 문자열에서 p번째 말하는 사람의 문자열을 t개 만큼 뽑아서 answer에 추가합니다.
int Idx=p-1;//현재 인덱스
for(int i=0;i<t;i++) answer+=total.charAt(Idx+i*m);
3. 저장해둔 answer문자열을 return 합니다.
전체 코드
class Solution {
static int num=0;
public String solution(int n, int t, int m, int p) {
String answer = "";
String total="";
//전체 문자열 길이를 (p가 t번 말할 수 있을 때)까지 구한다
// ex - (2,4,2,1)
// 0*, 1, 1*, 0, 1*, 1, 1*, 0, 0 -> *은 p번째 사람이 말한 숫자
while(total.length()<p+m*(t-1)){
total+=Integer.toString(num++,n).toUpperCase(); //num을 n진법으로 나타내 string에 저장.
}
int Idx=p-1;//현재 인덱스
for(int i=0;i<t;i++)
answer+=total.charAt(Idx+i*m);
return answer;
}
}'Algorithms(CT) > Programmers' 카테고리의 다른 글
| [프로그래머스] Lv.3 순위 (Java) (0) | 2023.06.27 |
|---|---|
| [프로그래머스] Lv.4 징검다리 (Java) (0) | 2023.06.26 |
| [프로그래머스][Java] Lv.2 k진수에서 소수 개수 구하기 (0) | 2023.06.22 |
| [프로그래머스] Lv2. 뉴스 클러스터링 (Java) (0) | 2023.06.21 |
| [프로그래머스] Lv.2 n^2 배열 자르기 (Java) (0) | 2023.06.19 |