728x90
[Java] 프로그래머스 : 튜플
https://school.programmers.co.kr/learn/courses/30/lessons/64065
접근
두 케이스가 어떻게 [2, 1, 3, 4]로 같은 값이 나오게 구현할 것인지 알아내는 것이 어려웠던 문제였다.
집합은 원소의 순서가 바뀌어도 상관없다는 문제의 조건 때문에 두 케이스는 같은 결과가 나올 수 있었다.
만약 두번째 케이스를 각 집합의 길이를 기준으로 오름차순 정렬하면 아래와 같다.
{{2},{2,1},{1,2,3},{1,2,4,3}}
반복문으로 각 집합을 순회하면서 집합 내의 원소가 정답 배열에 존재하지 않는 경우 배열에 추가하는 식으로 구현하면 [2, 1, 3, 4] 배열을 구현할 수 있었다.
코드
import java.util.*;
class Solution {
public List<Integer> solution(String s) {
List<Integer> answer = new ArrayList<>();
String tempStr = s.substring(2, s.length());
String tempStr2 = tempStr.substring(0, tempStr.length() - 2)
.replace("},{", "-");
String[] tempArr = tempStr2.split("-");
Arrays.sort(tempArr, new Comparator<String>() {
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
});
for (String t : tempArr) {
String[] temp = t.split(",");
for (int i = 0; i < temp.length; i++) {
int n = Integer.parseInt(temp[i]);
if (!answer.contains(n)) {
answer.add(n);
}
}
}
return answer;
}
}
728x90
'알고리즘 문제 풀이 > 정렬' 카테고리의 다른 글
[Java] 프로그래머스 : 프로세스 (0) | 2023.09.16 |
---|---|
[Java] 프로그래머스 : 귤 고르기 (0) | 2023.08.27 |