알고리즘/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의 관계를 잘 파악하여 인덱스로 표현하는 것인 것 같다.

정확하게 문제를 이해한다면 큰 어려움없이 문제를 풀 수 있을 것 같다.