[ํ๋ก๊ทธ๋๋จธ์ค] ์ฝ๋ฉํ ์คํธ ์ฐ์ต
- ํด์ -
์์ฃผํ์ง ๋ชปํ ์ ์
Level 1
1. ๋ฌธ์
๋ฌธ์ ์ค๋ช
์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์์ต๋๋ค.
๋จ ํ ๋ช
์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด participant์
์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด completion์ด ์ฃผ์ด์ง ๋,
์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ง๋ผํค ๊ฒฝ๊ธฐ์ ์ฐธ์ฌํ ์ ์์ ์๋ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
- completion์ ๊ธธ์ด๋ participant์ ๊ธธ์ด๋ณด๋ค 1 ์์ต๋๋ค.
- ์ฐธ๊ฐ์์ ์ด๋ฆ์ 1๊ฐ ์ด์ 20๊ฐ ์ดํ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ฐธ๊ฐ์ ์ค์๋ ๋๋ช ์ด์ธ์ด ์์ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1"leo"๋ ์ฐธ์ฌ์ ๋ช ๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช ๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
์์ #2"vinko"๋ ์ฐธ์ฌ์ ๋ช ๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช ๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
์์ #3"mislav"๋ ์ฐธ์ฌ์ ๋ช ๋จ์๋ ๋ ๋ช ์ด ์์ง๋ง, ์์ฃผ์ ๋ช ๋จ์๋ ํ ๋ช ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ช ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
2. ํ์ด
ํด์ ์ฐ์ต๋ฌธ์ ๋ผ HashMap๊ณผ HashMap์ ํจ์๋ฅผ ์ด์ฉํด์ ํ์ด๋ณด์๋ค.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> player = new HashMap<>();
for (String p : participant)
player.put(p, player.getOrDefault(p, 0) + 1);
for (String p : completion)
player.put(p, player.get(p) - 1);
for (String key : player.keySet()) {
if (player.get(key) != 0) {
answer = key;
}
}
return answer;
}
}
์ฝ๋ ๊ฐ๋จ ์ค๋ช
HashMap๋ Key์ Value ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํํ์ด๋ค. HashMap ์นดํ ๊ณ ๋ฆฌ์ ๋ฌธ์ ๋ผ HashMap์ ์ด์ฉํ๋ค.
(๋ฐฐ์ด๋ก ํ๋ฉด ๋ ๊ฐ๋จํ๊ฒ ํ๋ฆฌ๊ธฐ๋ ํ๋ค..)
completion์๋ ์๋ participant๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ด ๋ฌธ์ ์ ๋ชฉํ์ด๋ค.
์ฃผ์ํ ์ ์ ๋๋ช ์ด์ธ๊ณผ, ๋ง์ง๋ง ์ฌ๋์ด ์์ฃผ๋ฅผ ๋ชปํ์ ๊ฒฝ์ฐ์ด๋ค.
participant์ completion (์ฐธ๊ฐ์์ ์์ฃผ์)๋ฅผ ๊ฐ์ ธ์จ๋ค.
HashMap์ Participant๋ฅผ ์ ๋ถ ์ถ๊ฐํ๋ค. ์ด๋ฆ๊ณผ ์ธ์์๋ฅผ ๊ฐ๊ฐ key-value๋ก ๊ฐ๋ ํ์์ผ๋ก ์ ์ฅํ๋ค.
(HashMap<String, Integer>์ผ๋ก ์ ์ธํ๊ธฐ ๋๋ฌธ์ key๊ฐ String ํ์ , value๊ฐ Integerํ์ ์ด๋ค.)
HashMap.getOrDefault('string', 0) : 'string'์ด๋ผ๋ Key์ ํด๋นํ๋ Value๊ฐ ์์ผ๋ฉด ๊ฐ์ ธ์ค๊ณ ,
์๋ ๊ฒฝ์ฐ 0์ Default๋ก ์ง์ ํ์ฌ ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ์ ํจ์
(์ฌ๊ธฐ์๋ ์๋ฅผ ๋ค์ด ๋๋ช ์ด์ธ์ด ์์ด์ ์ด๋ฏธ string์ด๋ผ๋ key๊ฐ ์๋ค๋ฉด, ์ด key๊ฐ์ value(์ด๋ฏธ ์ ์ฅ๋์ด ์๋ 1)๋ฅผ ๊ฐ์ ธ์ค๊ณ +1์ ์ฆ๊ฐ์ํค๋ ํํ(1+1 => 2)๋ก ์ด์ฉ๋๋ ๊ฒ์ด๋ค.)
Participant ๋ฐฐ์ด ๋งํผ ๋ฐ๋ณตํ๋ฉฐ Participant player๋ฅผ ์ถ๊ฐํ๋ฉฐ,
HashMap.getOrDefault ํจ์๋ฅผ ์ด์ฉํด์, key์๋ player๊ฐ, value๋ +1๋ก ์ ์ฅ๋๋ค.
value๋ฅผ ๋จ์ํ 1์ด ์๋๊ณ countํ๋ ๋ฐฉ์์ผ๋ก ์ฆ๊ฐ์ํค๋ ์ด์ ๋ ๋๋ช ์ด์ธ ๋๋ฌธ์ด๋ค.
์๋ฅผ ๋ค์ด, Max ๋ผ๋ ๋๋ช ์ด์ธ์ด ๋์ผ ๊ฒฝ์ฐ ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋ ํ HashMap ๋ด์ Max๋ผ๋ ํค๊ฐ์ value๋ 2๋ก ์ ์ฅ๋์ด ์์ ๊ฒ์ด๋ค.
completion ๋ฐฐ์ด ๋งํผ ๋ฐ๋ณตํ๋ฉฐ ์์ฃผ์๋ฅผ ์ฐพ๋๋ค.
๊ฐ ์ ์๋ค์ ์ด๋ฆ์ด key์ด๊ณ , ๊ทธ ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋์ด ๋ช ๋ช ์ธ์ง value๋ก ์ ์ฅํ HashMap์์ ์์ฃผ์๋ค์ ์ ์ธ์ํค๊ณ ๋จ์ ํ ๋ช ์ ์ฐพ๋๋ค. ์์ฃผ์ ๋ฐฐ์ด์ ์ด๋ฆ์ ์ฐพ์์ key๊ฐ ์๋ค๋ฉด value๋ฅผ -1์ ํ๋ค.
HashMap์์ key๊ฐ์ ๋๋ฉฐ value ๊ฐ์ด ์ต์ข ์ ์ผ๋ก 0์ด ์๋๋ผ๋ฉด,
๊ทธ ์ด๋ฆ์ ์์ฃผ์์ ์๋ player๋ ๋ป์ผ๋ก, ๊ทธ ์ด๋ฆ์ answer์ ๋์ ํ๊ณ return ํ๋ค.
๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ๋ค์ ํ์ด๋ณด๋ ๋๋์ด ๋ค๋ฅด๋ค..
HashMap ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๊ธฐ๋ณธ ํจ์๋ค์ ๋ค์ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค.
๋๐ง
๋๊ธ