https://school.programmers.co.kr/learn/courses/30/lessons/64065
import java.util.LinkedHashSet;
import java.util.Arrays;
class Solution {
public int solution(int[] nums) {
// 1. s를 배열로 만들어주기
s = s.substring(1, s.length() - 2);
s = s.replace("{", "");
String[] arr = s.split("},");
// 2. 문자열 길이에 따라 정렬
Arrays.sort(arr, (String s1, String s2) -> s1.length() - s2.length());
s = String.join(",", arr);
arr = s.split(",");
// 3. 중복 제거
LinkedHashSet<Integer> set = new LinkedHashSet<>();
for (String num : arr) {
set.add(Integer.parseInt(num));
}
// 4. set -> int [] 변환
int[] answer = set.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
import java.util.*;
class Solution {
public int[] solution(String s) {
Set<String> set = new HashSet<>();
String[] arr = s.replaceAll("[{]", " ").replaceAll("[}]", " ").trim().split(" , ");
Arrays.sort(arr, (a, b)->{return a.length() - b.length();});
int[] answer = new int[arr.length];
int idx = 0;
for(String s1 : arr) {
for(String s2 : s1.split(",")) {
if(set.add(s2)) answer[idx++] = Integer.parseInt(s2);
}
}
return answer;
}
}
우와...
중복제거에 set이 정말 빠르다. set의 사용법 숙지해두기
문자열을 다루는 방법을 더 연습해야겠다.
배열 내 문자의 길이에 따라 정렬하는 방법
Arrays.sort(arr, (a,b)-> {return a.length() - b.length();});
set 자료형에서 .add()할 때
set에 존재함 -> false 반환
set에 존재 X -> true 반환
푸는데 거의 2시간 걸린 것 같다. 전보단 줄었는데 IDE없이 푸는 코딩테스트에서 잘 풀 수 있을 것 같진 않다. IDE가 진짜.. ㅠ 얼마나 효율성을 극대화해주는지 새삼 깨달았다.
매일 연습중인데도 버벅거리기 일쑤지만 하나 둘 씩 익숙해져 가는 과정이 즐겁다.