[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์
https://programmers.co.kr/learn/courses/30/lessons/42576
๋ฌธ์ ์ค๋ช
์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์์ต๋๋ค. ๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด participant์ ์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด completion์ด ์ฃผ์ด์ง ๋, ์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ง๋ผํค ๊ฒฝ๊ธฐ์ ์ฐธ์ฌํ ์ ์์ ์๋ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
- completion์ ๊ธธ์ด๋ participant์ ๊ธธ์ด๋ณด๋ค 1 ์์ต๋๋ค.
- ์ฐธ๊ฐ์์ ์ด๋ฆ์ 1๊ฐ ์ด์ 20๊ฐ ์ดํ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ฐธ๊ฐ์ ์ค์๋ ๋๋ช ์ด์ธ์ด ์์ ์ ์์ต๋๋ค.
Code
import java.util.HashMap;
import java.util.Map;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer= "";
HashMap<String,Integer> hm = new HashMap();
for(String people : participant) hm.put(people,hm.getOrDefault(people,0)+1);
for(String people : completion) hm.put(people,hm.get(people)-1);
for(Map.Entry<String,Integer> tmp: hm.entrySet()){
if(tmp.getValue() !=0){
answer = tmp.getKey();
return answer;
}
}
return answer;
}
}
Code ์ค๋ช
HashMap์ ์ด์ฉํด์ key๊ฐ ์ฌ๋์ ์ด๋ฆ, value๊ฐ ์ฌ๋ ์์ธ hm์ ์ ์ธํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ participant๋ฅผ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ hm์ ๋ฃ์ด์ฃผ๋๋ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ๊ทธ value์ 1์ ๋ํด์ฃผ๊ณ ์๋๋ผ๋ฉด 0์๋ค๊ฐ 1์ ๋ํด์ค๋ค.
๋ค์์ผ๋ก completion์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ hm์ value๊ฐ์ 1์ฉ ๋นผ์ค๋ค. ๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋ช
๋ง value๊ฐ 1์ด๊ณ ๋๋จธ์ง๋ 0์ด๋๋ค.
hm์ ๋ฐ๋ณต๋ฌธ์ ํตํด์ value๊ฐ 0์ธ๊ฐ์ ์ฐพ์์ returnํด์ค๋ค.
๋ฐฐ์ด์
์ด ๋ฌธ์ ๋ ์ฒ์์๋ ๊ทธ๋ฅ String ๋ฐฐ์ด์ ์ด์ฉํด์ sort๋ฅผ ํด์ค๋ค์ ํ๋ํ๋ ๋น๊ตํด์ ํ์๋ค. ํ์ง๋ง ๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ
String ๋ฐฐ์ด์ ์ด์ฉํ ๋ฐฉ์์ sort๋ ๋๋ฒํ๊ณ ๋ง์ง๋ง์ ํ๋ํ๋ ๋น๊ตํ๋ ๋ฐ๋ณต๋ฌธ๊น์ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๋ ์ค๋๊ฑธ๋ฆฐ๋ค๋๊ฒ์ ์๊ฒ๋์๋ค.
๊ทธ๋์ ์ด๋ฒ HashMap์ ์ฌ์ฉํ๋ค.
HashMap์ key,value๋ฅผ ๊ฐ์ง๊ตฌ์กฐ์ด๊ณ , key๋ฅผ ์ด์ฉํด์ ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ฒ ๋ฌธ์ ์์๋ HashMap<String, Integer> hm = new HashMap()์ ์ด์ฉํด์ ์ ์ธํด์ฃผ๊ณ
๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ hm.put(key, value)๋ฅผ ์ด์ฉํด์ ๋ฃ์ด์ฃผ์๋ค.
- ์ฌ๊ธฐ์ hm.getOrDefalut๋ฅผ ์ฌ์ฉํ์๋๋ฐ get์ key๊ฐ์ ์ด์ฉํด์ ๊ฒ์ํ ๋ค์ value๋ฅผ ๋จ์ํ ๋ฆฌํดํด์ฃผ๋๋ฐ ์ด ๋ ํด๋น key๊ฐ์ด ์๋ค๋ฉด null์ ๋ฆฌํดํด์ค๋ค. ํ์ง๋ง getOrDefalut๋ key๊ฐ ์์๋ null์ ๋ฐํํด์ฃผ์ง์๊ณ , ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก๋๊ฒจ์ค default๊ฐ์ ๋ฆฌํดํด์ฃผ๊ฒ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ HashMap์ ์ํํ๋ ๋ฐฉ์์ด๋ค. Iterator๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์๋ ์๊ณ for๋ฌธ ๋ฐฉ์์ด ์๋๋ฐ ์ต์ํ for๋ฌธ์ ์ฌ์ฉํ๋ค.(Iterator๋ ๋๋ฌด ๋ณต์กํ๊ณ ์ ์ฐ๋์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.) ํด์๋งต์๋ entrySet()์ด๋ผ๋ ๋ฉ์๋๊ฐ ์๋๋ฐ ์ด๋ key,value๋ฅผ ๊ฐ์ง entrySet์ ๋ฆฌํดํด์ค๋ค. ๊ทธ๋์ Map.entry tmp๋ฅผ ์ด์ฉํด์ ๋ฐ์์ฃผ์๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algoritm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์ฒด์ก๋ณต (0) | 2021.07.13 |
---|---|
[Algoritm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ํฐ์ผ๋ชฌ (0) | 2021.07.12 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (0) | 2021.07.10 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ชจ์๊ณ ์ฌ (0) | 2021.07.08 |
[Algorithm/JAVA][ํ๋ก๊ทธ๋๋จธ์ค]K๋ฒ์งธ ์ (0) | 2021.07.07 |