-
[프로그래머스] 모의고사 / 가장 큰 수 (07.11)algorithm/프로그래머스 2020. 7. 11. 01:47
문제
https://programmers.co.kr/learn/courses/30/lessons/42840
접근법
Level 1 문제여서 간단한 문제였다.
우선 수포자들이 찍는 번호가 지정이 되어있으므로 배열로 처리하여 반복문을 사용해야한다고 생각하였다.
반복되는 규칙과 규칙의 길이가 다른 부분을 어떻게 처리해주느냐가 가장 중요한 부분이었다고 생각한다.
코드
import java.util.Arrays; import java.util.LinkedList; import java.util.List; class Solution { public int[] solution(int[] answers) { int[] answer = {}; int first[] = {1,2,3,4,5}; int second[] = {2,1,2,3,2,4,2,5}; int third[] = {3,3,1,1,2,2,4,4,5,5}; int cnt[] = new int[4]; for(int i=0;i<answers.length;i++){ int solve = answers[i]; if(first[i%first.length] == solve) cnt[1] ++; if(second[i%second.length] == solve) cnt[2] ++; if(third[i%third.length] == solve) cnt[3] ++; } int max = Math.max(cnt[1], Math.max(cnt[2], cnt[3])); List<Integer> list = new LinkedList<>(); for(int i=1;i<cnt.length;i++){ if(cnt[i] == max) list.add(i); } answer = new int[list.size()]; for(int i=0;i<answer.length;i++){ answer[i] = list.get(i); } Arrays.sort(answer); return answer; } }
문제
https://programmers.co.kr/learn/courses/30/lessons/42746
접근법
처음에는 단순히 정수들을 문자열로 바꾸고 정렬을 하면 될 것이라고 생각하고 코드를 짰다.
위 코드의 문제점은 맨 앞자리가 같은 숫자가 존재할 때 발생하였다.
입출력 예에서 보았을 때 30과 3은 303 또는 330으로 합쳐질 수가 있다. 근데 단순히 문자열을 역순으로 정렬하였을 경우에는 30 3 순으로 정렬이 되기 때문에 까다로웠다.
그래서 정렬을 할때 JAVA8의 람다식을 사용하여서 두 문자열을 붙여보았을 때를 비교하여 정렬하였다.
마지막으로 Test Case 하나가 틀렸는데
만약 입력이 {0, 0, 0, 0}이 되었을 경우 답이 0000이 나오는 경우가 발생하여서 그 부분을 수정하였다.
코드
import java.util.Arrays; class Solution { public String solution(int[] numbers) { StringBuilder answer = new StringBuilder(); String[] numStr = new String[numbers.length]; for(int i=0;i<numbers.length;i++){ numStr[i] = String.valueOf(numbers[i]); } Arrays.sort(numStr, (o1, o2) -> String.valueOf(Long.parseLong(o1+o2)) .compareTo(String.valueOf(Long.parseLong(o2+o1)))); int cnt =0; for(int i=numStr.length-1;i>=0;i--) { answer.append(numStr[i]); if(numStr[i].equals("0")) cnt++; } if(cnt == numStr.length) return "0"; return answer.toString(); } }
'algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 숫자 야구 (07.20) (0) 2020.07.20 [프로그래머스] 라면공장 (07.16) (0) 2020.07.16 [프로그래머스] 여행경로 (07.15) (0) 2020.07.15 [프로그래머스] 단어 변환 (07.13) (0) 2020.07.13 [프로그래머스] H-Index (07.12) (0) 2020.07.12