ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  Kit ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜
    Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ/Programmers 2020. 6. 27. 14:59

    ๋ฌธ์ œ ์„ค๋ช…

    ์ˆ˜๋งŽ์€ ๋งˆ๋ผํ†ค ์„ ์ˆ˜๋“ค์ด ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด participant์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด completion์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

    ์ œํ•œ์‚ฌํ•ญ

    • ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • completion์˜ ๊ธธ์ด๋Š” participant์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค.
    • ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    import java.util.HashMap;
    import java.util.Iterator;
    
    class Solution {
        public String solution(String[] participant, String[] completion) {
            String answer;
            HashMap<String, Integer> runners = new HashMap<String, Integer>();
            
            for(String name : participant) {
                if(runners.containsKey(name)) {
                    int num = runners.get(name) + 1;
                    runners.replace(name, num);
                } else {
                    runners.put(name, 1);
                }
            }
            
            for(String name : completion) {
                int num = runners.get(name);
                
                if(num > 1) { runners.replace(name, num - 1);}
                if(num == 1) { runners.remove(name); }
            }
            
            answer = runners.keySet()
                            .iterator()
                            .next();
            
            return answer;
        }
    }

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

    ์ฒ˜์Œ์—๋Š” ์ง๊ด€์ ์œผ๋กœ brute force๋ฐฉ์‹์„ ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ๋ฅผ ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๊ฐ€ 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ด๊ธฐ ๋•Œ๋ฌธ์— time complexity๊ฐ€ O(n^2)์ธ brute force๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋ฌธ์ œ์œ ํ˜•์ด ํ•ด์‹œ์ด๊ธฐ๋„ ํ•ด๊ณ  ๊ทธ๋ž˜์„œ ํ•ด์‹œ๋งต์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

     

    ์ฒ˜์Œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ–ˆ๋‹ค.

    1. Participant ๋ฐฐ์—ด์˜ ๊ฐ’์„ key๋กœ ํ•˜๊ณ  index๊ฐ’์„ value๋กœ ํ•ด์„œ ํ•ด์‹œ๋งต์— ์ €์žฅํ•œ๋‹ค.

    2. ํ•ด์‹œ๋งต์ด Completion ๋ฐฐ์—ด์˜ ๊ฐ’์„ key๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค.

    3. ํ•ด์‹œ๋งต์—์„œ ๋‚จ์•„์žˆ๋Š” ์ด๋ฆ„์„ ํ™•์ธํ•œ ํ›„ return ํ•œ๋‹ค.

    ํ•˜์ง€๋งŒ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฐธ๊ฐ€์ž ์ค‘ ๋™๋ช…์ด์ธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์•˜๋‹ค. ์ด๋ฆ„์„ key๊ฐ’์„ ํ•  ๊ฒฝ์šฐ ์ด ์ด๋ฆ„์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฌ ๋ช… ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ฒ˜์Œ ์ƒ๊ฐํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” value๊ฐ€ ์•„๋ฌด ์˜๋ฏธ์—†์ด ๊ทธ๋ƒฅ ๋†€๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ value๊ฐ’์œผ๋กœ ์ด ์ด๋ฆ„์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํƒ„์ƒํ–ˆ๋‹ค.

     

    1. Participant ๋ฐฐ์—ด์˜ ๊ฐ’(=์ฐธ๊ฐ€์ž ์ด๋ฆ„)์„ key๋กœ ํ•˜๊ณ  ๊ทธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ value๋กœ ํ•ด์„œ ํ•ด์‹œ๋งต์— ์ €์žฅํ•œ๋‹ค.

    2. ํ•ด์‹œ๋งต์ด completion ๋ฐฐ์—ด์˜ ๊ฐ’(=์™„์ฃผ์ž ์ด๋ฆ„)์„ key๊ฐ’์œผ๋กœ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

      1. ๊ทธ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜๊ฐ€ 1์ด๋ฉด ํ•ด๋‹น Key๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค.

      2. ๊ทธ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณต ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜๊ฐ€ 1๋ณด๋‹ค ํฌ๋ฉด value๊ฐ’์„ decrementํ•˜์—ฌ replaceํ•œ๋‹ค.

    3. ํ•ด์‹œ๋งต์„ traverseํ•ด์„œ ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜๋ฅผ returnํ•œ๋‹ค.

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

    ์ด๋ฆ„์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ ธ๋‹ค.

    ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•œ๊ณ„๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ธธ๋Ÿฌ์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐํ–ˆ๋‹ค.

    ๋Œ“๊ธ€

Designed by Tistory.