ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ] 2019 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ ๋ฆฌํฌ๋ฃจํŒ… ์˜คํ”ˆ ์ฑ„ํŒ…๋ฐฉ
    Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ/others 2020. 7. 3. 00:31

    ๋ฌธ์ œ ์„ค๋ช…

    ์นด์นด์˜คํ†ก ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์—์„œ๋Š” ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ณธ๋ž˜ ๋‹‰๋„ค์ž„์ด ์•„๋‹Œ ๊ฐ€์ƒ์˜ ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

    ์‹ ์ž…์‚ฌ์›์ธ ๊น€ํฌ๋ฃจ๋Š” ์นด์นด์˜คํ†ก ์˜คํ”ˆ ์ฑ„ํŒ…๋ฐฉ์„ ๊ฐœ์„คํ•œ ์‚ฌ๋žŒ์„ ์œ„ํ•ด, ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค์ด ๋“ค์–ด์˜ค๊ณ , ๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ์ง€์ผœ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ์ž์ฐฝ์„ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ฑ„ํŒ…๋ฐฉ์— ๋ˆ„๊ตฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

     

    "[๋‹‰๋„ค์ž„]๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

     

    ์ฑ„ํŒ…๋ฐฉ์—์„œ ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜๊ฐ€๋ฉด ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

     

    "[๋‹‰๋„ค์ž„]๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."

     

    ์ฑ„ํŒ…๋ฐฉ์—์„œ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€์ด๋‹ค.

    • ์ฑ„ํŒ…๋ฐฉ์„ ๋‚˜๊ฐ„ ํ›„, ์ƒˆ๋กœ์šด ๋‹‰๋„ค์ž„์œผ๋กœ ๋‹ค์‹œ ๋“ค์–ด๊ฐ„๋‹ค.

    • ์ฑ„ํŒ…๋ฐฉ์—์„œ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

    ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋Š” ๊ธฐ์กด์— ์ฑ„ํŒ…๋ฐฉ์— ์ถœ๋ ฅ๋˜์–ด ์žˆ๋˜ ๋ฉ”์‹œ์ง€์˜ ๋‹‰๋„ค์ž„๋„ ์ „๋ถ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

     

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฑ„ํŒ…๋ฐฉ์— Muzi์™€ Prodo๋ผ๋Š” ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์˜ค๋ฉด ์ฑ„ํŒ…๋ฐฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

     

    "Muzi๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

    "Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

     

    ์ฑ„ํŒ…๋ฐฉ์— ์žˆ๋˜ ์‚ฌ๋žŒ์ด ๋‚˜๊ฐ€๋ฉด ์ฑ„ํŒ…๋ฐฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚จ๋Š”๋‹ค.

     

    "Muzi๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

    "Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

    "Muzi๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."

     

    Muzi๊ฐ€ ๋‚˜๊ฐ„ํ›„ ๋‹ค์‹œ ๋“ค์–ด์˜ฌ ๋•Œ, Prodo ๋ผ๋Š” ๋‹‰๋„ค์ž„์œผ๋กœ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ๊ธฐ์กด์— ์ฑ„ํŒ…๋ฐฉ์— ๋‚จ์•„์žˆ๋˜ Muzi๋„ Prodo๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

     

    "Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

    "Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

    "Prodo๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."

    "Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

     

    ์ฑ„ํŒ…๋ฐฉ์€ ์ค‘๋ณต ๋‹‰๋„ค์ž„์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์žฌ ์ฑ„ํŒ…๋ฐฉ์—๋Š” Prodo๋ผ๋Š” ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋‘ ๋ช…์ด ์žˆ๋‹ค. ์ด์ œ, ์ฑ„ํŒ…๋ฐฉ์— ๋‘ ๋ฒˆ์งธ๋กœ ๋“ค์–ด์™”๋˜ Prodo๊ฐ€ Ryan์œผ๋กœ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ฑ„ํŒ…๋ฐฉ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

     

    "Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

    "Ryan๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

    "Prodo๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."

    "Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

     

    ์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๊ฑฐ๋‚˜, ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•œ ๊ธฐ๋ก์ด ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด record๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ๊ธฐ๋ก์ด ์ฒ˜๋ฆฌ๋œ ํ›„, ์ตœ์ข…์ ์œผ๋กœ ๋ฐฉ์„ ๊ฐœ์„คํ•œ ์‚ฌ๋žŒ์ด ๋ณด๊ฒŒ ๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌธ์ž์—ด ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๋ผ.

     

    ์ œํ•œ์‚ฌํ•ญ

    • record๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ๋‹ด๊ธด ๋ฐฐ์—ด์ด๋ฉฐ, ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ด๋‹ค.

    • ๋‹ค์Œ์€ record์— ๋‹ด๊ธด ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์„ค๋ช…์ด๋‹ค.

      • ๋ชจ๋“  ์œ ์ €๋Š” [์œ ์ € ์•„์ด๋””]๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

      • [์œ ์ € ์•„์ด๋””] ์‚ฌ์šฉ์ž๊ฐ€ [๋‹‰๋„ค์ž„]์œผ๋กœ ์ฑ„ํŒ…๋ฐฉ์— ์ž…์žฅ - Enter [์œ ์ € ์•„์ด๋””] [๋‹‰๋„ค์ž„] (ex. Enter uid1234 Muzi)

      • [์œ ์ € ์•„์ด๋””] ์‚ฌ์šฉ์ž๊ฐ€ ์ฑ„ํŒ…๋ฐฉ์—์„œ ํ‡ด์žฅ - Leave [์œ ์ € ์•„์ด๋””] (ex. Leave uid1234)

      • [์œ ์ € ์•„์ด๋””] ์‚ฌ์šฉ์ž๊ฐ€ ๋‹‰๋„ค์ž„์„ [๋‹‰๋„ค์ž„]์œผ๋กœ ๋ณ€๊ฒฝ - Change [์œ ์ € ์•„์ด๋””] [๋‹‰๋„ค์ž„] (ex. Change uid1234 Muzi)

      • ์ฒซ ๋‹จ์–ด๋Š” Enter, Leave, Change ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

      • ๊ฐ ๋‹จ์–ด๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž, ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.

      • ์œ ์ € ์•„์ด๋””์™€ ๋‹‰๋„ค์ž„์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•œ๋‹ค.

      • ์œ ์ € ์•„์ด๋””์™€ ๋‹‰๋„ค์ž„์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 10 ์ดํ•˜์ด๋‹ค.

      • ์ฑ„ํŒ…๋ฐฉ์—์„œ ๋‚˜๊ฐ„ ์œ ์ €๊ฐ€ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ ์ž˜๋ชป ๋œ ์ž…๋ ฅ์€ ์ฃผ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

    ๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋‚˜

    import java.util.ArrayList;
    import java.util.HashMap;
    
    class Enterence {
        public String uid;
        public int enterence;
        
        public Enterence(String uid, int enterence) {
            this.uid = uid;
            this.enterence = enterence;
        }
    }
    
    class Solution {
        private static final int EXIT = 0;
        private static final int ENTER = 1;
        
        public String[] solution(String[] record) {
            String[] answer;
            ArrayList<String> ansList = new ArrayList<>();
            ArrayList<Enterence> enterSec = new ArrayList<>();
            HashMap<String, String> idNname = new HashMap<String, String>();
            
            for(int i = 0; i < record.length; i++) {
                String[] rec = record[i].split(" ");
                String command = rec[0];
                String uid = rec[1];
                String nickName = (rec.length > 2) ? rec[2] : "";
                
                switch(command) {
                    case "Enter" :
                        idNname.put(uid, nickName);
                        enterSec.add(new Enterence(uid, ENTER));
                        break;
                        
                    case "Leave" :
                        enterSec.add(new Enterence(uid, EXIT));
                        break;
                        
                    case "Change" :
                        idNname.replace(uid, nickName);
                        break;
                }    
            }
            
            for(Enterence ent : enterSec) {
                String nickName = idNname.get(ent.uid);
                
                switch(ent.enterence) {
                    case EXIT:
                        ansList.add(nickName + "๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.");
                        break;
                        
                    case ENTER:
                        ansList.add(nickName + "๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.");
                        break;
                }
            }
            
            answer = ansList.stream().toArray(String[]::new);
            
            return answer;
        }
    }

     

    ๋‚˜๋Š” ์™œ ์ €๋ ‡๊ฒŒ ํ’€์—ˆ๋‚˜

    ๋ฌธ์ œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด ์œ ์ €๋งˆ๋‹ค ๊ณ ์œ ํ•œ id์ธ uid๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ฒฐ๊ตญ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ”๊พผ ๋‹‰๋„ค์ž„์ด ์ถœ๋ ฅ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” key๊ฐ’์œผ๋กœ๋Š” uid๋ฅผ, value๊ฐ’์œผ๋กœ๋Š” nickname์„ ๊ฐ–๋Š” hashmap์„ ๋งŒ๋“ค์–ด์„œ ์œ ์ € ๊ฐ์ž์˜ ๋‹‰๋„ค์ž„์„ ํŒŒ์•…ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

     

    ๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ฝ”๋“œ์—์„œ ์ฃผ๋ชฉํ•  ๊ฒƒ์ด Entrance๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ–ˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ์œ ์ €๋“ค์˜ ์ถœ์ž…๊ธฐ๋ก์„ ๋‚˜ํƒ€๋‚ด๋Š” ํด๋ž˜์Šค์ด๋‹ค. ํ˜น์‹œ ๋‚˜์ค‘์— enter์™€ exit ์™ธ์— ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ถ”๊ฐ€๋  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด ์ผ๋‹จ Int๊ฐ’์œผ๋กœ enterence๋ผ๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ฒŒ ํ–ˆ๋‹ค.

     

    ๋ฐฐ๊ฒฝ ์„ค๋ช…์€ ์—ฌ๊ธฐ๊นŒ์ง€๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๋‹ค. record๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ command, uid, nickname์„ ํŒŒ์•…ํ•œ ๋’ค command์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ณ  ๋‚˜์ค‘์— ์ถœ์ž…๊ธฐ๋ก๋“ค์„ ๋ชจ์•„๋†“์€ list๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๋ฌธ์ž์—ด์„ ๋ชจ์•„์ฃผ๋ฉด ๋œ๋‹ค. ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•ด์„œ if๋ฌธ ๋Œ€์‹  switch๋ฌธ์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ๋‚ด๊ฐ€ ๋ณผ ๋•Œ๋Š” ํ•œ ๋ˆˆ์— ์ฝ”๋“œ๊ฐ€ ์ž˜ ๋“ค์–ด์™€์„œ ๋„ˆ๋ฌด ๋ฟŒ๋“ฏํ•˜๋‹ค ๐Ÿ˜„

     

    ๋‚˜๋Š” ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜

    ์ด ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ ์ฒ˜์Œ ํ‘ผ ์นด์นด์˜ค ๋ฌธ์ œ์ธ๋ฐ ํ’€๋ฉด์„œ ์™œ ์นด์นด์˜ค๊ฐ€ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์˜ ํŠธ๋ Œ๋“œ๋ฅผ ์ด๋„๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

    ์ •๋ง ์–‘์งˆ์˜ ๋ฌธ์ œ์˜€๋‹ค. ์—ฌํƒœ ํ’€์–ด๋ณธ ๋ฌธ์ œ๋“ค๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ง€๋ฌธ์ด ๊ธด ํŽธ์ธ๋ฐ ์ง€๋ฌธ์—์„œ ํžŒํŠธ๋ฅผ ๋‹ค ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ผผ๊ผผ์ด ์ฝ์–ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

     

    ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋‚˜๋ฆ„ ์ƒ๊ฐํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ ๋” ๋งŽ์€ ์ž๋ฃŒ๋“ค์„ ์ฝ๊ณ  ์—ฐ์Šตํ•˜๋ฉด์„œ ํด๋ฆฐ ์ฝ”๋”์— ๊ฐ€๊นŒ์›Œ์ง€๋ฆฌ๋ผ๊ณ  ๋‹ค์งํ–ˆ๋‹ค.

    ๋Œ“๊ธ€

Designed by Tistory.