728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/64065
풀이
문자열이 주어지는 규칙?을 잘 보고 필요한 원소들로 어떻게 잘 나눌 것인지를 고민해봐야 한다!
String 배열을 String.length()의 오름차순으로 정렬해서 비교하고 넣어주면 순서에 맞게 들어간다
여기서 어떻게 String.length()의 오름차순으로 정렬하냐!!!!!!!!!!
// String 배열을 String.length()의 오름차순으로 정렬!
Arrays.sort(strArray, Comparator.comparing(String::length));
얘임! 잘 알아두자
내림차순은
Arrays.sort(strArray, Comparator.comparing(String::length, Comparator.reverseOrder()));
얘임
자세한건 주석으로!
코드
// 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 튜플
// https://programmers.co.kr/learn/courses/30/lessons/64065
package PROGRAMMERS.level2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
public class Num64065_튜플 {
private static class Solution {
private int[] solution(String s) {
s = s.substring(2, s.length() - 2).replace("},{", "-");
String[] strArray = s.split("-");
// String 배열을 String.length()의 오름차순으로 정렬!
Arrays.sort(strArray, Comparator.comparing(String::length));
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < strArray.length; i++) {
String str = strArray[i];
String[] temp = str.split(",");
for (int j = 0; j < temp.length; j++) {
int tempInt = Integer.parseInt(temp[j]);
if (!arrayList.contains(tempInt)) { // 없는 원소면 추가
arrayList.add(tempInt);
}
}
}
int[] answer = new int[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
answer[i] = arrayList.get(i);
}
return answer;
}
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(Arrays.toString(sol.solution("{{2},{2,1},{2,1,3},{2,1,3,4}}")));
System.out.println(Arrays.toString(sol.solution("{{1,2,3},{2,1},{1,2,4,3},{2}}")));
System.out.println(Arrays.toString(sol.solution("{{20,111},{111}}")));
System.out.println(Arrays.toString(sol.solution("{{123}}")));
System.out.println(Arrays.toString(sol.solution("{{4,2,3},{3},{2,3,4,1},{2,3}}")));
}
}
728x90