알고리즘/Java
[프로그래머스] Java - [3차] n진수 게임
조이은
2023. 5. 11. 14:34
https://school.programmers.co.kr/learn/courses/30/lessons/17687
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Level 2. [3차] n진수 게임
2018 KAKAO BLIND RECRUITMENT
접근 방식
1. m*t까지의 숫자를 n진수로 변환하여 한글자씩 arraylist에 추가한다.
2. num arraylist의 크기만큼 반복문을 돌면서, index%m== p-1인 인덱스의 글자를 answer에 더한다.
3. answer을 대문자로 변환한다.
코드
import java.util.*;
class Solution {
public String solution(int n, int t, int m, int p) {
String answer = "";
// n진수로 변환하여 num arraylist에 한글자씩 추가
ArrayList<Character> num = new ArrayList<>();
for(int i=0; i<m*t; i++) {
for(int j=0; j<Integer.toString(i, n).length(); j++) {
num.add(Integer.toString(i,n).charAt(j));
}
}
// 순서대로 뽑아서 answer에 더함
int cnt = 0;
for(int i=0; i<num.size(); i++) {
if(cnt==t)
break;
if(i%m==p-1) {
answer += num.get(i);
cnt++;
}
}
//대문자로 변환
answer = answer.toUpperCase();
return answer;
}
}
고찰
고찰이랄 것도 없이 엄청 빠르게 풀었다! 혹시 이렇게하면 되지 않을까 하면서 풀었더니 정말로 답이어서 행복했다..^__^
이 문제에서 중요한 것은 n,t,m,p의 관계를 잘 파악하여 인덱스로 표현하는 것인 것 같다.
정확하게 문제를 이해한다면 큰 어려움없이 문제를 풀 수 있을 것 같다.