#문제
https://programmers.co.kr/learn/courses/30/lessons/64065
#풀이
각 Set의 Element 수로 오름차순 정렬하고
HashSet을 통해 Element 중복 체크를 하며, 중복되지 않는 Element를 차례대로 넣는다.
#소스코드
import java.util.*;
class Solution {
public int[] solution(String s) {
int len = s.length();
s = s.substring(2, len-2); // 대 괄호를 지우고
String[] sets = s.split("\\},\\{"); // },{ 문자열로 split
int n = sets.length;
ArrayList<Integer> answer = new ArrayList<Integer>();
HashSet<String> used = new HashSet<String>();
ArrayList<String[]> list = new ArrayList<String[]>();
for(String set : sets){
list.add(set.split(",")); // 각 set의 elem을 나눠서 배열로 만든 다음에 list에 넣음.
}
Collections.sort(list, new Comparator<String[]>(){
@Override
public int compare(String[] arr1, String[] arr2){
return arr1.length - arr2.length;
}
}); // elem의 수가 적은 집합부터 오름차순 정렬
for(String[] set : list){
for(String elem : set){
if(used.contains(elem)) continue;
used.add(elem);
answer.add(Integer.parseInt(elem));
}
}
return answer.stream().mapToInt(x->x).toArray();
}
}
'💡Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 행렬의 곱셈 (Java) (0) | 2021.10.20 |
---|---|
[프로그래머스] 괄호 회전하기 (Java) (0) | 2021.10.20 |
[프로그래머스] 배달 (Java) (0) | 2021.10.20 |
[프로그래머스] 다리를 지나가는 트럭 (Java) (0) | 2021.10.20 |
[프로그래머스] 영어 끝말잇기 (Java) (0) | 2021.10.20 |