문제
문제가 길어서 링크로 대체
https://programmers.co.kr/learn/courses/30/lessons/64065
코딩테스트 연습 - 튜플
"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]
programmers.co.kr
내 풀이코드
public ArrayList<Integer> solution(String s) { //튜플
//문자열에서 {,}이 3개를 다 없애고 가운데에 있는 },{대신에 -을 넣는다.
s = s.substring(2, s.length() - 2).replace("},{", "-");
String[] arr = s.split("-"); //-을 중심으로 쪼개서 arr배열에 넣는다.
Arrays.sort(arr, new Comparator<String>() { // Comparator을 이용해서 arr배열의 길이를 오름차순으로 배열한다.
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
ArrayList<Integer> list = new ArrayList<>(); // 답을 담을 list를 생성성
for (String temp : arr) { // 배열 arr의 요소 하나하나를 ,을 기준으로 나누어서 val배열에 담아준다.
String[] val = temp.split(",");
for (int i = 0; i < val.length; i++) { //val배열의 요소가 String형태이기 때문에 Integer형태로 변형시켜준다.
int num = Integer.valueOf(val[i]);
if (!list.contains(num)) { //그리고 중복을 제거하여 차례대로 list에 추가해준다.
list.add(num);
}
}
}
return list;
}
우선 처음엔 튜플의 규칙도 잘 이해가 가질 않아서 풀기가 굉장히 막막했다. 그런데 튜플의 규칙을 알고나니 그럭저럭 어떻게 풀어야 할 지 감이 잡히기 시작했다.
우선 튜플의 규칙은 처음에 {2,1,3,4}와 {1,2,4,3}이 같다고 해서 그러면 이 둘 중에 뭐가 튜플인지 어떻게 구분을 하냐라고 생각을 했는데 추가되는 규칙을 보니 튜플 {2,1,3,4}는 2다음 1다음 3다음 4이런 순서로 추가가 되었다. 그래서 튜플에 대한 감이 잡히기 시작하면서 위의 코드와 같이 풀었고 풀이는 주석에 써놨으니 읽으면 쉽게 풀 수 있을 것이다.
'프로그래머스 > Level 2' 카테고리의 다른 글
| [프로그래머스][Level2][Java] 괄호 변환 (0) | 2022.05.17 |
|---|---|
| [프로그래머스][Level2][Java] 위장 (0) | 2022.05.17 |
| [프로그래머스][Level2][Java] 짝지어 제거하기 (0) | 2022.04.14 |
| [프로그래머스][Level2][Java] 점프와 순간이동 (0) | 2022.04.08 |
| [프로그래머스][Level2][Java] 영어 끝말잇기 (0) | 2022.04.04 |