문제 설명
접근 방법
우선 입력받은 문자열 s 중 '{'와 '}'를 모두 제거하여 숫자와 쉼표(,)만 남게 합니다. 이후 쉼표(,)를 기준으로 문자열을 분리(split)하여 문자열(숫자 문자열) 배열을 만듭니다.
s = s.replace("{", "");
s = s.replace("}", "");
String[] numbers = s.split(",");
각각의 숫자 문자열을 HashMap에 key 값으로 저장하면서 개수(value)를 카운팅(counting)합니다.
Map<String, Integer> map = new HashMap<>();
for (String number : numbers) {
map.put(number, map.getOrDefault(number, 0) + 1);
}
HashMap 크기 만큼의 배열을 만들어 HashMap key의 개수(value)가 가장 많을수록 첫 번째 인덱스에 가깝게, 개수가 가장 적을수록 마지막 인덱스에 가깝게 저장합니다.
int totalCount = map.size();
int[] answer = new int[totalCount];
for (String key : map.keySet()) {
answer[totalCount - map.get(key)] = Integer.parseInt(key);
}
전체 소스 코드
import java.util.HashMap;
import java.util.Map;
class Solution {
public int[] solution(String s) {
Map<String, Integer> map = new HashMap<>();
s = s.replace("{", "");
s = s.replace("}", "");
String[] numbers = s.split(",");
for (String number : numbers) {
map.put(number, map.getOrDefault(number, 0) + 1);
}
int totalCount = map.size();
int[] answer = new int[totalCount];
for (String key : map.keySet()) {
answer[totalCount - map.get(key)] = Integer.parseInt(key);
}
return answer;
}
}
참고자료
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 더 맵게 - Java (0) | 2022.05.10 |
---|---|
[프로그래머스] 기능개발 - Java (0) | 2022.05.08 |
[프로그래머스] 오픈채팅방 - Java (0) | 2022.05.06 |
[프로그래머스] 문자열 압축 - Java (0) | 2022.04.25 |
[프로그래머스] 메뉴 리뉴얼 - Java (0) | 2022.04.10 |