티스토리 뷰
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2019 카카오 개발자 겨울 인턴십 Level 2 문제다.
{}로 구분을 해 각 집합을 ArrayList에 넣고,
ArrayList의 길이에 따라 정렬한다.
그리고 순서대로 HashMap에 넣으면서 튜플을 생성한다.
튜플의 각 숫자를 넣은 순서대로 하기 위해 HashMap의 키값에 인덱스를 부여하고
인덱스 값에 따라 정렬했는데, LinkedHashSet을 사용하거나 HashSet의 add함수를 사용해도 된다.
또한 전달인자로 들어온 String s 값을 하나하나 비교했지만
{ }를 replaceAll로 치환 후 각 집합을 구분해도 될 것같다.
너무 단순하고 일차원적인 방법만 생각해낸 거 같은데,
다른 분들 풀이를 보면서 더 직관적인 코드를 배워가는 것도 재밌다.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
class Solution {
public int[] solution(String s) {
ArrayList<ArrayList<Character>> list = new ArrayList<>();
ArrayList<Character> tmp = new ArrayList<>();
for(int i=0;i<s.length();i++) {
char c = s.charAt(i);
if(c == '}') {
list.add(new ArrayList<>(tmp));
tmp.clear();
}
if(c == '{' || c == '}' || (c == ',' && s.charAt(i - 1) == '}'))
continue;
tmp.add(c);
}
list.remove(list.size() - 1);
list.sort((o1, o2) -> o1.size() - o2.size());
HashMap<Integer, Integer> map = new HashMap<>();
StringBuilder sb = new StringBuilder();
int idx = 0;
for(ArrayList<Character> l : list) {
for(char c : l) {
if(c == ',') {
int i = Integer.parseInt(sb.toString());
if(!map.containsKey(i))
map.put(i, idx++);
sb.setLength(0);
continue;
}
sb.append(c);
}
int i = Integer.parseInt(sb.toString());
if(!map.containsKey(i))
map.put(i, idx++);
sb.setLength(0);
}
// map에 넣은 순서(value)에 따라 정렬
List<Map.Entry<Integer, Integer>> entries =
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toList());
int[] ans = new int[idx];
idx = 0;
for (Map.Entry<Integer, Integer> entry : entries)
ans[idx++] = entry.getKey();
return ans;
}
}
728x90
'algorithm > programmers' 카테고리의 다른 글
[프로그래머스/자바] 수식 최대화 풀이 - 2020 카카오 인턴십 (0) | 2022.11.13 |
---|---|
[프로그래머스/자바] 키패드 누르기 풀이 - 2020 카카오 인턴십 (0) | 2022.11.13 |
[프로그래머스/자바] 불량 사용자 풀이 - 2019 카카오 개발자 겨울 인턴십 (0) | 2022.11.13 |
[프로그래머스/자바] 징검다리 건너기 풀이 - 2019 카카오 개발자 겨울 인턴십 (2) | 2022.11.13 |
[프로그래머스/자바] 크레인 인형뽑기 게임 - 2019 카카오 개발자 겨울 인턴십 (0) | 2022.11.13 |