https://programmers.co.kr/learn/courses/30/lessons/64065
- 변수 제한사항 범위가 좁아서 딱히 복잡도 걱정을 안하고 푼 문제이다.
실무에서도 JSON 파싱 등을 할 때 종종 쓸만한 방법인 것 같다. },{ 단위로 쪼개는 String.split(String regex) 함수를 쓰려고 정규표현식을 한번 복습했다. 정규표현식에서 중괄호가 앞 문자의 반복을 나타내는 특수문자로 쓰일 수 있어서 백슬래시 2개로 escape 처리를 해줘야한다.
- 파싱된 int 배열들을 배열 길이 오름차순으로 정렬해서 맨 앞 원소부터 조회하면서 없는 숫자를 담아주면 된다.
import java.util.*;
class Solution {
public int[] solution(String s) { // s 100만
List<List<String>> a = new ArrayList<>();
String[] strArr = s.substring(2, s.length() - 2).split("\\},\\{");
for(int i = 0; i < strArr.length; ++i) {
String[] substr = strArr[i].split(",");
a.add(Arrays.asList(substr));
}
Collections.sort(a, (fi, se) -> fi.size() - se.size());
Set<Integer> ans = new LinkedHashSet<>();
for(int i = 0; i < a.size(); ++i) {
for(int j = 0; j < a.get(i).size(); ++j) {
int num = Integer.parseInt(a.get(i).get(j));
if(!ans.contains(num)) ans.add(num);
}
}
return ans.stream().mapToInt(Integer::intValue).toArray();
}
}
'Algorithm > programmers' 카테고리의 다른 글
2019 카카오 개발자 겨울 인턴쉽 - 호텔 방 배정(경로 압축) - Java 풀이 (0) | 2022.03.28 |
---|---|
2019 카카오 개발자 겨울 인턴쉽 - 불량 사용자(순열, 해시, 정규표현식) - Java 풀이 (0) | 2022.03.28 |
2022 Kakao blind 92343 - 양과 늑대(트리, 백트래킹 or dp) - Java, C++ 풀이 (0) | 2022.03.24 |
2022 Kakao blind 92342 - 양궁대회(백트래킹 or 그리디+완전탐색)) - Java 풀이 (0) | 2022.03.24 |
2022 Kakao blind 92341 - 주차 요금 계산(해쉬, 정렬, 문자열파싱, 구현) - Java 풀이 (0) | 2022.03.24 |