728x90
https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
메모리: 111 MB, 시간: 45.90 ms
사용 알고리즘: 자료구조, 문자열
import java.util.*;
class Solution {
public int[] solution(String s) {
int start, end;
StringTokenizer st;
ArrayList<Integer> list;
Map<Integer, ArrayList> map = new HashMap<>();
for(int i = 1; i < s.length() - 1; i++) {
if(s.charAt(i) == '{') {
start = i;
while(s.charAt(++i) != '}');
end = i;
// {} 안의 수들을 ","를 기준으로 분할
st = new StringTokenizer(s.substring(start + 1, end), ",");
// 분할한 수들을 리스트에 담기
list = new ArrayList<>();
while(st.hasMoreTokens()) list.add(Integer.parseInt(st.nextToken()));
// 리스트 길이를 key값으로 Map에 담기
map.put(list.size(), list);
}
}
int[] answer = new int[map.size()];
Set<Integer> set = new HashSet<>();
for(int i = 1; i <= map.size(); i++) {
// 리스트 길이가 짧은 순으로 가져오기
list = map.get(i);
for(int j = 0; j < list.size(); j++) {
// 이미 확인한 수는 넘어가기
if(!set.contains(list.get(j))) {
set.add(list.get(j));
answer[i - 1] = list.get(j);
break;
}
}
}
return answer;
}
}728x90
'Problem Solving > Programmers' 카테고리의 다른 글
| [프로그래머스, 132265] 롤케이크 자르기 (java) (0) | 2025.12.16 |
|---|---|
| [프로그래머스, 12949] 행렬의 곱셈 (java) (0) | 2025.12.15 |
| [프로그래머스, 87390] n^2 배열 자르기 (java) (0) | 2025.12.13 |
| [프로그래머스, 76502] 괄호 회전하기 (java) (0) | 2025.12.12 |
| [프로그래머스, 131701] 연속 부분 수열 합의 개수 (java) (0) | 2025.12.11 |