반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/64065
코드 및 해설(주석)
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
class Solution {
public int[] solution(String s) {
ArrayList<String> list = new ArrayList<>();
//내가 원하는 형태로 바꿈
//같은집합 사이는 , 로 구분
//다른 집합은 / 로 구분
//마지막에 / 추가
s = s.substring(2, s.length() - 2).replace("},{", "/") + "/";
//list 에 집합별로 넣음
while (s.contains("/")) {
int sep = s.indexOf('/');
list.add(s.substring(0, sep));
s = s.substring(sep + 1);
}
//부분집합의 갯수가 곧 result 의 갯수
int[] answer = new int[list.size()];
//list 원소 갯수 기준 정렬
list.sort(Comparator.comparingInt(String::length));
//set 에 넣어서 신규 요소인지 판단하기 위함
HashSet<Integer> set = new HashSet();
//answer 채우기
int idx = 0;
for (String str : list) {
String[] nums = str.split(",");
for (String num : nums) {
boolean isNew = set.add(Integer.valueOf(num));
if (isNew) {
answer[idx++] = Integer.valueOf(num);
}
}
}
return answer;
}
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
프로그래머스 더 맵게 (0) | 2021.07.21 |
---|---|
프로그래머스 압축 (0) | 2021.07.09 |
프로그래머스 괄호 변환 (0) | 2021.07.01 |
프로그래머스 최대공약수와 최소공배수 (0) | 2021.06.16 |
프로그래머스 핸드폰 번호 가리기 (0) | 2021.06.14 |
최근댓글