๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

[Algorithm/Java][ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

๋ฐ˜์‘ํ˜•

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 2022 KAKAO BLIND RECRUITMENT ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

https://programmers.co.kr/learn/courses/30/lessons/92334

๋ฌธ์ œ์ ‘๊ทผ

์ผ๋‹จ ๋ฌธ์ œ๊ฐ€ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ๋“ค์ด ๋งŽ์•„์„œ ์ฒ˜์Œ์—๋Š” ์‹ ๊ณ  ๋‹นํ•œ ํšŸ์ˆ˜, ์‹ ๊ณ ํ•œ ์‚ฌ๋žŒ, ์•Œ๋ฆผ ๋ฉ”์ผ์„ ๋ฐ›์„ ํšŸ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ฐ๋กœ map์„ ์ด์šฉํ•ด์„œ 3๊ฐœ์˜ map์„ ๋งŒ๋“ค์–ด์„œ ์ ‘๊ทผํ–ˆ๋Š”๋ฐ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์„œ ๊ทธ๋ƒฅ 3๊ฐœ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ User ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ ๋” ์ƒ๊ฐํ•˜๊ธฐ ์‰ฌ์› ๊ณ  ๋‚ด๊ฐ€ ๋Š๋ผ๊ธฐ์—๋Š” ๋ณต์žกํ•จ์ด ๋งŽ์ด ์ค„์–ด๋“ค์—ˆ๋‹ค.

Code

import java.util.HashMap;
import java.util.HashSet;

class Solution {
    class User {
        HashSet<String> report; // ์‹ ๊ณ ํ•œ ์‚ฌ๋žŒ๋“ค ๋ชจ์Œ
        int count; // ์‹ ๊ณ  ๋ฐ›์€ ํšŸ์ˆ˜
        int alarm; // ๋ฉ”์ผ ํšŸ์ˆ˜
        User() {
            count = 0;
            alarm = 0;
            report = new HashSet<>();
        }
        public void beReported(){
            count += 1;
        }
        public void addAlarm(){
            alarm += 1;
        }

    }
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
        HashMap<String, User> users = new HashMap<>();
        for(int i = 0; i<id_list.length; i++){
            // users ์ดˆ๊ธฐํ™”
            users.put(id_list[i],new User());
        }
        for (int i = 0; i < report.length; i++) {
            // ์‹ ๊ณ  ์ฒ˜๋ฆฌ
            String[] temp = report[i].split(" ");
            if(users.get(temp[0]).report.contains(temp[1])) continue;
            users.get(temp[0]).report.add(temp[1]);
            users.get(temp[1]).beReported();
        }
        for(int i = 0; i< id_list.length; i++){
            // ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฉ”์ผ ์ฒ˜๋ฆฌ
            if(users.get(id_list[i]).report.isEmpty()){
                answer[i] = 0;
                continue;
            }
            for(String reported: users.get(id_list[i]).report){
                if(users.get(reported).count >= k){
                    answer[i] += 1;
                }
            }
        }
        return answer;
    }
}

์–ด๋ ค์› ๋˜ ์  / ๋ฐฐ์šด ์  / ๋Š๋‚€ ์ 

class๋ฅผ ์ด์šฉํ•˜๋‹ˆ๊นŒ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ? ์ƒ๊ฐํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋ดค์„ ๋•Œ๋Š” ๋ญ์ง€ ์–ด๋ ค์›Œ ๋ณด์ด๋Š”๋ฐ ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ๋ง‰์ƒ ํ’€๊ณ ๋ณด๋‹ˆ๊นŒ ์‰ฌ์šด ๋ฌธ์ œ๊ฐ™๋‹ค๊ณ  ๋Š๊ปด์กŒ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ฝ”ํ…Œ์—์„œ๋„ private์œผ๋กœ ์„ ์–ธํ•˜์—ฌ getter/setter๋ฅผ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ• ๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ... ๋„ˆ๋ฌด ๊ธธ์–ด์ ธ์„œ ๊ตณ์ด ํ•  ํ•„์š” ์—†์„๊ฒƒ ๊ฐ™๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›์•„์„œ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค.

๋ฐ˜์‘ํ˜•