์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์์ต๋๋ค. ๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด 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"
HashMap ์ด์ฉ
๐ก ์ ์ ์ด๋ฆ key ๊ฐ, ๋๋ช
์ด์ธ์ด ๋์ฌ ๋๋ value+1
๐ก ์์ฃผํ ์ ์๋ค value-1
๐ก value๊ฐ 0์ด ์๋๋ฉด ์์ฃผํ ์ ์๊ฐ ์๋
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;
}
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;
}
}
์ฑ๊ณตโจ