import java.util.*;
class Solution {
public int[] solution(String s) {
//String 묶음으로 갈무리
String[] lists = s.substring(2, s.length() - 2).split("},\\{");
//크기가 작은 순으로 정렬
Arrays.sort(lists, Comparator.comparingInt(String::length));
Set<Integer> checkDuplication = new HashSet<>();
int[] answer = new int[lists.length];
int indexCount = 0;
for(String list : lists) {
String[] numbers = list.split(",");
for (String value : numbers) {
int number = Integer.parseInt(value);
//answer에 없는 값만 추가
if (checkDuplication.add(number)) {
answer[indexCount++] = number;
}
}
}
return answer;
}
}
풀이
1. 어떤 방법을 사용하던간에 String으로 들어온 값을 각 묶음으로 만들어준다.
2. 크기가 작은 순으로 정렬을 해준다. 첫번째부터 확인을 해야 다음 값부터 이전 번째의 값들을 소거하면서 찾을 수 있다.
3. 값들을 하나씩 넣어준다.
느낀점
java에서의 String의 사용법을 많이 익혀야겠다고 느꼈다. 더러운듯 깔끔한 함수들인 것같다. set의 add함수가 true, false를 리턴해주는 것을 잘 써먹어야겠다.
https://school.programmers.co.kr/learn/courses/30/lessons/64065
'Algorithm > Programmers' 카테고리의 다른 글
[JAVA] 프로그래머스 [1차] 캐시 (1) | 2024.12.09 |
---|---|
[JAVA] 프로그래머스 괄호 회전하기 (0) | 2024.12.05 |
[JAVA] 프로그래머스 할인행사 (0) | 2024.12.04 |
[JAVA] 프로그래머스 연속 부분 수열 합의 개수 (0) | 2024.12.02 |
[JAVA] 프로그래머스 예상 대진표 (1) | 2024.11.30 |