-
[프로그래머스 17687] 3진수 게임 (java)알고리즘 문제 풀기 2021. 5. 19. 19:00
나의 코드
class Solution { public String solution(int n, int t, int m, int p) { String answer = ""; String game = "0"; int max = t * m; // 최대 갯수 int count = 0; while(game.length() <= max) { count++; String temp = ""; // 한 숫자의 값을 담을 문자열 for (int i = count; i != 0; ) { if (i % n > 9) { char ch = (char)(55 + (i % n)); // 'A' - 10 + 나머지 temp += Character.toString(ch); } else { temp += Integer.toString(i % n); } i /= n; } StringBuffer sb = new StringBuffer(temp); game += sb.reverse().toString(); } // 자신의 차례에 맞는 아이템만 추출 int start = p-1; for (int i = 0; i < t; i++) { answer += game.charAt(start); start += m; } return answer; } }
각 자릿수를 구하기 위해 나누기 -> (혹시 10 이상일 경우 알파벳으로 표현) -> 문자열 뒤집기를 통해 각 자릿수를 구해서 전체 게임에서 나오는 경우를 계산한다.
그 다음, 자신의 차례에 맞는 글자만 뽑아서 정답에 더해서 풀이했다.모범 답안
class Solution { public String solution(int n, int t, int m, int p) { String answer = ""; int startNum = 0; String targetString = new String(); String retString = new String(); while (targetString.length() < m * t) { targetString += Integer.toString(startNum++, n); } for (int i=0; i<t; i++) { retString += targetString.charAt(p - 1 + i * m); } answer = retString.toUpperCase(); return answer; } }
나의 코드에서 while문을 통해 복잡하게 한 처리 과정을
Integer.toString(num, radix)
를 통해 깔끔하게 해결했다. 일반적으로toString(num)만 사용하는데
, radix를 주어 더욱 간편하게 해결하는 방법도 알게 되었다. 덕분에 차례별 글차 추출도 더욱 간편해졌다.
이렇게 간결한 코드를 짜도록 노력해야겠다..'알고리즘 문제 풀기' 카테고리의 다른 글
[프로그래머스 12978] 배달 (Java) (0) 2021.07.05 [백준 1991] 트리 순회 (java) (0) 2021.05.25 [프로그래머스 12981] 영어 끝말잇기 (java) (0) 2021.05.05 [프로그래머스 42746] 가장 큰 수 (java) (0) 2021.04.30 [프로그래머스 70129] 이진 변환 반복하기 (java) (0) 2021.04.29