https://school.programmers.co.kr/learn/courses/30/lessons/64065
코딩테스트 연습 > 2019 카카오 개발자 겨울 인턴십 > 튜플
난이도: LEVEL2
알고리즘 유형: 구현
정답 코드1
import java.util.*;
class Solution {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
ArrayList<Integer> answer = new ArrayList<>();
public int[] solution(String s) {
int st = 1;
int et = 1;
for(int i = 1; i < s.length() - 1; i++){
char cur = s.charAt(i);
if(cur == '}'){
String str = s.substring(st + 1, i);
String [] split = str.split(",");
ArrayList<Integer> temp = new ArrayList<>();
for(String next : split){
temp.add(Integer.parseInt(next));
}
list.add(temp);
st = i + 2;
}
}
Collections.sort(list, (o1, o2) -> {
return o1.size() - o2.size();
});
int [] answer = new int [list.get(list.size()-1).size()];
Set<Integer> set = new HashSet<>();
int cnt = 0;
for(ArrayList<Integer> cur : list){
for(int next : cur){
if(set.contains(next)) continue;
answer[cnt++] = next;
set.add(next);
break;
}
}
return answer;
}
}
정답 코드2 (정답 코드1 리팩토링)
import java.util.*;
class Solution {
public int[] solution(String s) {
// 불필요한 문자 제거: "{{", "}}"와 "},{"를 제거하여 숫자만 남도록 변환
s = s.replaceAll("\\{\\{", "").replaceAll("\\}\\}", "").replaceAll("\\},\\{", "-");
// "-"로 구분하여 각 집합을 배열로 분리
String[] sets = s.split("-");
System.out.println(Arrays.toString(sets));
// 각 집합을 파싱하여 리스트에 추가
List<List<Integer>> list = new ArrayList<>();
for(String set : sets) {
List<Integer> temp = new ArrayList<>();
for(String num : set.split(",")) {
temp.add(Integer.parseInt(num));
}
list.add(temp);
}
// 리스트의 크기를 기준으로 정렬
Collections.sort(list, Comparator.comparingInt(List::size));
// 정답 배열 구성
int[] answer = new int[list.get(list.size()-1).size()];
Set<Integer> set = new HashSet<>();
int cnt = 0;
for(List<Integer> cur : list) {
for(int next : cur) {
if(set.contains(next)) continue;
answer[cnt++] = next;
set.add(next);
break;
}
}
return answer;
}
}
'Algorithm > Programmers Java' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL2 n^2 배열 자르기 (1) | 2024.10.15 |
---|---|
[JAVA] 프로그래머스 LEVEL2 괄호 회전하기 (1) | 2024.10.14 |
[JAVA] 프로그래머스 LEVEL2 롤케이크 자르기 (1) | 2024.10.14 |
[JAVA] 프로그래머스 LEVEL2 이진 변환 반복하기 (0) | 2024.10.13 |
[JAVA] 프로그래머스 LEVEL2 쿼드압축 후 개수 세기 (1) | 2024.10.13 |