문제
https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
특정 튜플을 표현하는 집합이 담긴 문자열 `s`가 주어진다.
`s`는 5 이상 1,000,000 이하이며 s는 숫자와 '{', '}', ','로 이루어져 있다.
`s`가 나타내는 튜플을 배열의 형태로 반환해야 한다.
풀이
튜플은 원소에 정해진 순서가 있다.
입출력 예시를 보면 `"{{2},{2,1},{2,1,3},{2,1,3,4}}"`가 인자로 들어올 때, ` [2, 1, 3, 4]`를 반환하고 있으므로 원소를 적게 가진 집합을 먼저 결과값에 넣어주어야 한다는 것을 알 수 있다.
`s`를 일단 원소의 개수를 기준으로 오름차순 정렬해주었다. 이렇게 오름차순 정렬된 숫자들을 `Set`에 넣어준다.
코드
import java.util.*;
class Solution {
public Set<Integer> solution(String s) {
String firstParse = s.replace("{{", "").replace("}}", "").replace("},{", " ");
String[] elements = firstParse.split(" ");
Arrays.sort(elements, (a, b) -> {
return a.length() - b.length();
});
StringBuilder sb = new StringBuilder();
for (String element : elements) {
sb.append(element + " ");
}
String secondParse = sb.toString().replaceAll(",", " ");
elements = secondParse.split(" ");
Set<Integer> answer = new LinkedHashSet<>();
for (String element : elements) {
answer.add(Integer.parseInt(element));
}
return answer;
}
}'Problem Solving > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/Java] N진수 게임 (feat. Java 진법 변환) (1) | 2025.05.23 |
|---|---|
| [프로그래머스/Java] 뉴스 클러스터링 (1) | 2025.05.22 |
| [프로그래머스/Java] 캐시 (0) | 2025.05.19 |
| [프로그래머스/Java] 비밀지도 (0) | 2025.05.14 |
| [프로그래머스/Java] 숫자 문자열과 영단어 (0) | 2025.05.14 |
