https://programmers.co.kr/learn/courses/30/lessons/64065
import java.util.*;
class Solution {
public ArrayList<Integer> solution(String s) {
// 문자열 앞뒤 {{, }}를 자르고 },{ 을 -로 변환
String str = s.substring(2, s.length()-2).replace("},{", "-");
// -단위로 string 나누기
String[] strArr = str.split("-");
// String의 길이를 비교하여 정렬하기
Arrays.sort(strArr, new Comparator<String>(){
public int compare(String s1, String s2){
return Integer.compare(s1.length(), s2.length());
}
});
ArrayList<Integer> answer = new ArrayList<>();
for (String sList: strArr){
// 각각의 문자열을 ,로 나누고 값들을 int로 변환
String[] temp = sList.split(",");
int[] temp2 = Arrays.stream(temp).mapToInt(Integer::parseInt).toArray();
// 배열 길이가 1이면 바로 List에 값을 넣고 아니라면
//for문을 돌며 값이 List에 있는지 확인 후 없으면 추가
if (temp2.length==1)
answer.add(temp2[0]);
else{
for (int i=0; i< temp2.length; i++){
if (!answer.contains(temp2[i]))
answer.add(temp2[i]);
}
}
}
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;
}
}
문제를 풀며 조건을 만들어 배열을 정렬하는 코드, String type의 배열을 int type의 배열로 변경하는 코드들의 경우는 작성하지 못하여 검색을 하여 이번에 다시 한번 알아가게되었다.
다음번에는 검색을 안하도록 외우고 넘어가도록 하자
// String의 길이를 비교하여 정렬하기
Arrays.sort(strArr, new Comparator<String>(){
public int compare(String s1, String s2){
return Integer.compare(s1.length(), s2.length());
}
});
위의 코드는 앞으로는 아래와 같이 작성하도록 하자~~외우기도 좋을 듯
Arrays.sort(arr, (a, b)->{return a.length() - b.length();});
// String을 int로 변환
Arrays.stream(temp).mapToInt(Integer::parseInt).toArray();
int a = Integer.parseInt(s2);