programmers.co.kr/learn/courses/30/lessons/64065
코딩테스트 연습 - 튜플
"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]
programmers.co.kr
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
class Solution {
public int[] solution(String s) {
ArrayList<Integer> answer = new ArrayList<>();
ArrayList<HashSet<Integer>> sets = new ArrayList<>();
Pattern pattern = Pattern.compile("\\{[\\d,]+\\}");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
String found = matcher.group();
found = found.replaceAll("[\\{\\}]", "");
String[] numsStr = found.split(",");
HashSet<Integer> set
= (HashSet<Integer>) Arrays.stream(numsStr).mapToInt(Integer::parseInt)
.boxed().collect(Collectors.toSet());
sets.add(set);
}
sets.sort(new Comparator<HashSet<Integer>>() {
@Override
public int compare(HashSet<Integer> o1, HashSet<Integer> o2) {
return Integer.compare(o1.size(), o2.size());
}
});
answer.addAll(sets.get(0));
for (int i = 1; i < sets.size(); i++){
sets.get(i).removeAll(sets.get(i - 1));
answer.addAll(sets.get(i));
sets.get(i).addAll(answer);
}
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
'Problem-solving > 프로그래머스' 카테고리의 다른 글
프로그래머스 - (2020 카카오 인턴십) 수식 최대화 (Java) (0) | 2020.11.23 |
---|---|
프로그래머스 - (2020 KAKAO BLIND RECRUITMENT) 괄호 변환 (Java) (0) | 2020.11.23 |
프로그래머스 - (2020 KAKAO BLIND RECRUITMENT) 문자열 압축 (Java) (0) | 2020.11.23 |
프로그래머스 - (2018 KAKAO BLIND RECRUITMENT) [1차]다트 게임 (Java) (0) | 2020.11.22 |
프로그래머스 - (2019 KAKAO BLIND RECRUITMENT) 실패율 (Java) (0) | 2020.11.22 |
댓글