[Programmers] ํํ (Java)
by ๋๋ถ๋https://school.programmers.co.kr/learn/courses/30/lessons/64065
๋ฌธ์ ์์ฝ
์์์ ๊ฐ์๊ฐ n๊ฐ์ด๊ณ ์ค๋ณต๋๋ ์์๊ฐ ์๋ ํํ(a1, a2, a3,... an)์ด ์ฃผ์ด์ง ๋, ์ด๋ ์งํฉ ๊ธฐํธ ({ })๋ฅผ ์ด์ฉํด ๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์์ต๋๋ค.
{{a1}, {a1, a2}, {a1, a2, a3}, ... , {a1, a2, a3,...., an}}
์๋ฅผ ๋ค์ด ํํ์ด (2, 1, 3, 4)์ธ ๊ฒฝ์ฐ ์ด๋ {{2}, {2, 1}, {2, 3, 1}, {2, 1, 3, 4}} ์ ๊ฐ์ด ์์ ์๊ด์์ด ํํ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์ ํ์ด
์์์ ์ฃผ์ด์ง (2, 1, 3, 4) ํํ์ ๋ณด๋ฉด 2๊ฐ 4๋ฒ, 1์ด 3๋ฒ, 3์ด 2๋ฒ, 4๊ฐ 1๋ฒ ๋์จ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ฆ, ์งํฉ ๊ธฐํธ๋ฅผ ํตํด ํํ๋๋ ์ซ์๋ฅผ ๋์จ ํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ฉด ํํ์ด ์์ฑ๋๋ค๋ ์๋ฏธ์ ๋๋ค.
import java.util.*;
import java.util.stream.Collectors;
class Solution {
// ๋ฌธ์ ์์๋ int[]๋ก ์ฃผ์ด์ง๋ ๋ฐ, list๋ก ๋ณ๊ฒฝํ์์ต๋๋ค!
public List<Integer> solution(String s) {
String[] nums = s.replace("{", "").replace("}", "").split(","); // ์ซ์๋ง ์ถ์ถํ์ฌ ๋ฐฐ์ด์ ์ ์ฅ
Map<String, Integer> countNum = new HashMap<>(); // ๋ฌธ์ ๊ฐ์๋ฅผ ๋ด์ map
// ์ซ์๋ฅผ key, ๋์จ ํ์๋ฅผ value๋ก ํ์ฌ ์ถ๊ฐ
for (String num : nums) {
countNum.merge(num, 1, Integer::sum); // merge๋ map ๋ณํฉ, Integer::sum์ ์ซ์ํฉ ์๋ฏธ
}
// map sort by value
countNum = countNum.entrySet()
.stream()
.sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue())) // value๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ (๋ด๋ฆผ์ฐจ์)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new)); // ๋ค์ map์ผ๋ก ๊ตฌ์ฑ
List<Integer> answer = new ArrayList<>();
countNum.forEach((key, value) -> answer.add(Integer.valueOf(key))); // list์ key๋ฅผ ์์๋๋ก ์ถ๊ฐ
return answer;
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ํธํ ๋ฐฉ ๋ฐฐ์ (Java) (0) | 2022.04.22 |
---|---|
[Programmers] n์ง์ ๊ฒ์ (Java) (0) | 2021.06.26 |
[Programmers] ์ฌ ์ฐ๊ฒฐํ๊ธฐ (Java) (0) | 2021.06.10 |
[Programmers] ํ์ผ๋ช ์ ๋ ฌ (Java) (0) | 2021.05.05 |
[Programmers] ๊ตฌ๋ช ๋ณดํธ (Java) (0) | 2021.05.01 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
๋๋ถ๋์ Devlog
๋๋ถ๋