๋šœ๋ถ€๋‹ˆ์˜ Devlog

[Programmers] ํŠœํ”Œ (Java)

by ๋šœ๋ถ€๋‹ˆ

https://school.programmers.co.kr/learn/courses/30/lessons/64065

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋ฌธ์ œ ์š”์•ฝ

์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 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;
    }
}

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

๋šœ๋ถ€๋‹ˆ์˜ Devlog

๋šœ๋ถ€๋‹ˆ

ํ™œ๋™ํ•˜๊ธฐ