프로그래머스 튜플(Java)
소개
이 문제는 2019 카카오 개발자 겨울 인턴십으로 출제되었던 문제이다.
해당 문제에 대한 아이디어는 다음과 같다.
로직
1) 연속된 숫자를 추출하여야 한다.
2) 1의 목적을 위해서 자료구조 HashMap을 사용하였다.
3) HashMap의 경우 같은 Key라면 (default :1) +1 씩 더해주었다.
4) 결과적으로 Value (HashMap의 Key에 따른 Value) 로 내림차순하여 순서대로 Key값을 출력해 주었다.
구체화 해보면 다음과 같다.
이를 그림으로 도식화 하면 다음과 같다.
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import java.util.*;
class Solution {
public int[] solution(String s) {
int[] answer = {};
ArrayList<int[]> al = new ArrayList<>();
char[] chaS = s.toCharArray();
HashMap<Integer, Integer> hm = new HashMap<>();
String str = "";
for(int i=0; i<chaS.length; i++){
if(Character.isDigit(chaS[i])){
str+=chaS[i];
}else{
if(str.equals("")) continue;
if(hm.containsKey(Integer.parseInt(str))){
hm.put(Integer.parseInt(str), hm.get(Integer.parseInt(str))+1);
str="";
continue;
}else{
hm.put(Integer.parseInt(str), 1);
str="";
}
}
}
answer = new int[al.size()];
for(int key : hm.keySet())
al.add(new int[]{key, hm.get(key)});
Collections.sort(al, new Comparator<int[]>(){
@Override
public int compare(int[] o1, int[] o2){
return o2[1]-o1[1];
}
});
answer = new int[al.size()];
for(int i=0; i<al.size(); i++){
answer[i] = al.get(i)[0];
}
return answer;
}
}
|
cs |
'알고리즘' 카테고리의 다른 글
다익스트라 X BOJ_4485_녹색옷입은애가 젤다지? (0) | 2021.05.26 |
---|---|
BOJ 17612 쇼핑몰 (0) | 2021.05.25 |
BOJ_1781_컵라면 (0) | 2021.05.23 |
프로그래머스 행렬 테두리 회전하기 (0) | 2021.05.21 |
프로그래머스 짝지어 제거하기 (0) | 2021.05.20 |
댓글
이 글 공유하기
다른 글
-
다익스트라 X BOJ_4485_녹색옷입은애가 젤다지?
다익스트라 X BOJ_4485_녹색옷입은애가 젤다지?
2021.05.26 -
BOJ 17612 쇼핑몰
BOJ 17612 쇼핑몰
2021.05.25 -
BOJ_1781_컵라면
BOJ_1781_컵라면
2021.05.23 -
프로그래머스 행렬 테두리 회전하기
프로그래머스 행렬 테두리 회전하기
2021.05.21