๐Ÿ“– [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด] 2019 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ - ์˜คํ”ˆ ์ฑ„ํŒ…๋ฐฉ ๋ฌธ์ œ ํ’€์ด

๐Ÿ“– ๋ฌธ์ œ

2019 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ - ์˜คํ”ˆ ์ฑ„ํŒ…๋ฐฉ ๋ฌธ์ œ

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

๐Ÿ” ์ ‘๊ทผ๋ฒ•

2019 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ - ์˜คํ”ˆ ์ฑ„ํŒ…๋ฐฉ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๊ฑฐ๋‚˜, ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•œ ๊ธฐ๋ก์ด ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด record๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ๊ธฐ๋ก์ด ์ฒ˜๋ฆฌ๋œ ํ›„,

์ตœ์ข…์ ์œผ๋กœ ๋ฐฉ์„ ๊ฐœ์„คํ•œ ์‚ฌ๋žŒ์ด ๋ณด๊ฒŒ ๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ฐ ์œ ์ €๋งˆ๋‹ค ๊ณ ์œ ํ•œ uid๊ฐ€ ์žˆ๊ณ  ๋ณ„๋ช… ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋‚˜๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜

Change๋กœ ๋ณ„๋ช…์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ™•์ธํ•ด์•ผํ•  ๊ฒƒ์€ ์ตœ์ข…์ ์œผ๋กœ ๋ฐฉ์„ ๊ฐœ์„คํ•œ ์‚ฌ๋žŒ์ด ๋ณด๊ฒŒ ๋˜๋Š” ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

์œ ์ €๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  ๋‚˜๊ฐ€๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋“ค์„ ํ‘œ์‹œํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ

๋‹จ, ๋ชจ๋“  ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ์ด ๋๋‚œ ํ›„ ํ•ด๋‹น ์ตœ์ข… ๋‹‰๋„ค์ž„์œผ๋กœ ํ‘œ์‹œํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

์šฐ์„ , ๊ฐ Enter, Leave ๊ฐ™์€ ๋ช…๋ น๋งˆ๋‹ค ๋ฌธ์ž์—ด ๋ฉ”์‹œ์ง€๋กœ ํ‘œ์‹œํ•ด์ฃผ๊ธฐ ์œ„ํ•ด

commandMessageMap ์— ๊ฐ ๋ช…๋ น๋งˆ๋‹ค ๋ฉ”์‹œ์ง€๋ฅผ ์ดˆ๊ธฐํ™” ํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  nicknameMap ์— ์‚ฌ์šฉ์ž์˜ uid , ๋‹‰๋„ค์ž„์„ ๋„ฃ์–ด ์ตœ์ข…์ ์œผ๋กœ๋Š”

๋งˆ์ง€๋ง‰ ๋‹‰๋„ค์ž„์ด ๊ฐ uid์— ์ €์žฅ๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ํ›„,

record ๋“ค์„ ํƒ์ƒ‰ํ•˜๋ฉฐ Change์ธ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ 

๊ฐ ๊ธฐ๋ก๋“ค์„ ๋ฌธ์ž์—ด ๋ฉ”์‹œ์ง€๋กœ ์ €์žฅํ•ด์ฃผ๋ฉด ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Map ์„ ์ž˜ ์ด์šฉํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ’ป ์ฝ”๋“œ

package problem.programmers;

import java.util.*;

class Solution {
    static Map<String,String> commandMessageMap;
    static Map<String,String> nicknameMap = new HashMap<>();
    public String[] solution(String[] record) {
        List<String> answerList = new ArrayList<>();
        
        commandMessageMapInit();
        setNicknameMap(record);

        for(int i=0; i<record.length; i++){
            String[] temp = record[i].split(" ");
            StringBuilder sb = new StringBuilder();
            String command = temp[0];
            String uid = temp[1];
            if(!command.equals("Change")) {
                String commandMessage = commandMessageMap.get(command);
                sb.append(nicknameMap.get(uid) + "๋‹˜์ด " + commandMessage);
                answerList.add(sb.toString());
            }
        }
        String[] answer = new String[answerList.size()];
        answerList.toArray(answer);
        return answer;
    }

    private void setNicknameMap(String[] record){
        for(int i=0; i<record.length; i++){
            String[] temp = record[i].split(" ");
            String command = temp[0];
            String uid = temp[1];

            if(temp.length>2) {
                String nickname = temp[2];
                nicknameMap.put(uid, nickname);
            }
        }
    }

    private void commandMessageMapInit(){
        commandMessageMap = new HashMap<>();
        commandMessageMap.put("Enter","๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.");
        commandMessageMap.put("Leave","๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.");
    }
}
Written on May 7, 2021