[Algorithm] ๐Ÿƒโ€โ™€๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

HaJingJingยท2021๋…„ 6์›” 5์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
61/119

0. ๋ฌธ์ œ

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

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

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

์˜ˆ์‹œ์ž…์ถœ๋ ฅ
1. participant : ["leo", "kiki", "eden"] completion : ["eden", "kiki"] return : "leo"
2. participant : ["marina", "josipa", "nikola", "vinko", "filipa"] completion : ["josipa", "filipa", "marina", "nikola"] return : "vinko"
3. participant : ["mislav", "stanko", "mislav", "ana"] completion : ["stanko", "ana", "mislav"] return : "mislav"

1. ์•„์ด๋””์–ด

HashMap ์ด์šฉ
๐Ÿ’ก ์„ ์ˆ˜ ์ด๋ฆ„ key ๊ฐ’, ๋™๋ช…์ด์ธ์ด ๋‚˜์˜ฌ ๋•Œ๋Š” value+1
๐Ÿ’ก ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค value-1
๐Ÿ’ก value๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์™„์ฃผํ•œ ์„ ์ˆ˜๊ฐ€ ์•„๋‹˜

2. ํ•ต์‹ฌ ํ’€์ด

1) ์„ ์ˆ˜ ์ด๋ฆ„ key ๊ฐ’, ๋™๋ช…์ด์ธ์ด ๋‚˜์˜ฌ ๋•Œ๋Š” value+1

for(String s : participant){
	if(marathon.containsKey(s))
    		marathon.put(s, marathon.get(s)+1);
        else
          	marathon.put(s, 1);
}

2) ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค value-1

for(String s : completion){
	marathon.put(s, marathon.get(s)-1);
}

3) value๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์™„์ฃผํ•œ ์„ ์ˆ˜๊ฐ€ ์•„๋‹˜

for(String s: marathon.keySet()){
	if(marathon.get(s) != 0)
		answer+=s;
}

3. ์ฝ”๋“œ

import java.util.HashMap;
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> marathon = new HashMap<>();
        
        for(String s : participant){
            if(marathon.containsKey(s))
                marathon.put(s, marathon.get(s)+1);
            else
                marathon.put(s, 1);
        }
        
        for(String s : completion){
            marathon.put(s, marathon.get(s)-1);
        }
        
        for(String s: marathon.keySet()){
            if(marathon.get(s) != 0)
                answer+=s;
        }
        
        return answer;
    }
}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€