코딩 테스트
(Java) 프로그래머스 튜플
로승리
2021. 12. 21. 00:03
문제가 복잡하게 쓰여있는데 차근히 읽어보니 어렵지 않았다.
풀이 방법은 바로 보이는데 String으로 넘어오는 s를 어떻게 배열로 변환할지 생각하는데 시간을 많이 썼다.
최종 코드
import java.util.*;
class Solution {
public int[] solution(String s) {
int[] answer = {};
// s의 맨 앞 {{ 부분 자르기
s = s.substring(2, s.length());
// s의 맨 뒤 }} 부분 자르고 },{ 부분 -로 변경
s = s.substring(0, s.length()-2).replace("},{", "-");
// -을 기준으로 자르기
String[] temp = s.split("-");
// 람다를 이용해서 길이별로 정렬
Arrays.sort(temp, (a,b) -> (a.length()-b.length()));
// 튜플을 위한 리스트 생성
List<Integer> list = new ArrayList<>();
for(String a : temp) {
// ,을 기준으로 다시 나누기
String[] temp2 = a.split(",");
for (int i = 0; i < temp2.length; i++) {
int n = Integer.parseInt(temp2[i]);
// 튜플에 값이 없다면
if(!list.contains(n)) {
list.add(n);
}
}
}
answer = list.stream().mapToInt(i -> i).toArray();
return answer;
}
}