๐ฅDAY +7 (๋ง์ด ์ฌ๋ค ๋์์จ..)
https://programmers.co.kr/learn/courses/30/lessons/42576?language=java
> ๋ฌธ์ ๊ฐ ๋ณด๊ณ ์ถ๋ค๋ฉด ํด๋ฆญ!
๋ฌธ์ ์ค๋ช
์๋ง์ ๋ง๋ผํค ์ ์๋ค์ด ๋ง๋ผํค์ ์ฐธ์ฌํ์์ต๋๋ค. ๋จ ํ ๋ช ์ ์ ์๋ฅผ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ์ ์๊ฐ ๋ง๋ผํค์ ์์ฃผํ์์ต๋๋ค.
๋ง๋ผํค์ ์ฐธ์ฌํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด participant์ ์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด completion์ด ์ฃผ์ด์ง ๋, ์์ฃผํ์ง ๋ชปํ ์ ์์ ์ด๋ฆ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ- ๋ง๋ผํค ๊ฒฝ๊ธฐ์ ์ฐธ์ฌํ ์ ์์ ์๋ 1๋ช ์ด์ 100,000๋ช ์ดํ์ ๋๋ค.
- completion์ ๊ธธ์ด๋ participant์ ๊ธธ์ด๋ณด๋ค 1 ์์ต๋๋ค.
- ์ฐธ๊ฐ์์ ์ด๋ฆ์ 1๊ฐ ์ด์ 20๊ฐ ์ดํ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ฐธ๊ฐ์ ์ค์๋ ๋๋ช ์ด์ธ์ด ์์ ์ ์์ต๋๋ค.
["leo", "kiki", "eden"] | ["eden", "kiki"] | "leo" |
["marina", "josipa", "nikola", "vinko", "filipa"] | ["josipa", "filipa", "marina", "nikola"] | "vinko" |
["mislav", "stanko", "mislav", "ana"] | ["stanko", "ana", "mislav"] | "mislav" |
์์ #1
"leo"๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
์์ #2
"vinko"๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
์์ #3
"mislav"๋ ์ฐธ์ฌ์ ๋ช
๋จ์๋ ๋ ๋ช
์ด ์์ง๋ง, ์์ฃผ์ ๋ช
๋จ์๋ ํ ๋ช
๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ช
์ ์์ฃผํ์ง ๋ชปํ์ต๋๋ค.
๐ฅ [๋ก์ง]
๊ฒ์์ ํจ์จ์ ์ํด HashMap์ ์ด์ฉํ๋ค. (๋ด๊ฐ ์ ๋ฆฌํ HashMap)
1. ๋ง๋ผํค์ ์์ฃผํ ์ ์๋ค์ ์ด๋ฆ์ key, ๋๋ช ์ด์ธ์ ์๊ธฐ ์ํ ์ด๋ฆ๋ณ ์นด์ดํธ ์๋ฅผ value๋ก ํ๋ HashMap ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ค.
(์ด๋์ ์๊ฐ๋ณต์ก๋ : O(n))
2. ๋ง๋ผํค ์ฐธ์ฌ ์ ์๋ช ๋จ์ ์ฐจ๋ก๋ก ํ์ธํ๋ฉด์ ๊ฐ์ด ์๋๊ฒฝ์ฐ 1์ฉ ๋นผ์ฃผ๊ณ ,
๊ฐ์ด ์๊ฑฐ๋ 0์ธ ๊ฒฝ์ฐ ์์ฃผํ์ง ๋ชปํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ์ ์๋ช ์ ๋ฆฌํดํด์ค๋ค.
๐ฅ [์ต์ข ์ฝ๋]
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
for(String c : completion) {
if(map.get(c) == null) {
map.put(c,1);
} else {
map.put(c, map.get(c)+1);
}
}
for(String p : participant) {
System.out.println(map.get(p));
if(map.get(p) == null || map.get(p) == 0) {
return p;
} else {
map.put(p, map.get(p)-1);
}
}
return "";
}
}
๐ฅ [์๊ฐ]
๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ์์ธ๋ก ์ฝ๊ฒ ๋๋ฐ?๋ผ๋ ์๊ฐ์ ํ๋ค. (ใ ใ )
ArrayList์์ containsํจ์๋ฅผ ์ฐ๋ฉด ์ฝ๊ฒ ๋ฆฌ์คํธ๋ผ๋ฆฌ์ ๋น๊ต๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฃผ์ ์์ด ์งฐ๋ ๊ฒ ๊ฐ๋ค.
(ใ ใ )
//๊ธฐ์กด ์ฝ๋ - ํจ์จ์ฑ 0์
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
List<String> cList = new ArrayList(Arrays.asList(completion));
for(String p : participant) {
if(cList.contains(p) == false) {
return p;
} else {
// System.out.println("ํฌํจํ");
cList.remove(p);
}
}
return answer;
}
}
๊ทธ๋ฐ๋ฐ ํจ์จ์ฑ์ด 0์ ์ด ๋์๋ค ใ ใ
์ ์ด์ ํจ์จ์ฑ์ด ๋ค 0์ ์ด๋ผ๋๊ฒ ๋ด๊ฐ ์ ํํ ArrayList๋ฐฉ์์ด ์๋ชป๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์ด์ ๋ค์ ์ฐพ์๋ณด๋..
๋ฌธ์ ์ ๋ณ๋ณํ๊ฒ "ํด์"๋ผ๊ณ ์ ํ์ ธ์์๋ค.ใ ๋ฌธ์ ๋ฅผ ์ ๋๋ก ๋ด์ผํ๋ ์ด์ ๋ฅผ ๋ ํ๋ฒ ๋ชธ์ ์ฒดํํ๋ฏ..ใ
Hash์ ๋ํด ์ ๋ชฐ๋๊ณ ๊ทธ ์ค์๋๋ํ ๋ฌด์ํ๊ณ ์์์ด์.. ๊ฒฐ๊ตญ 2์๊ฐ์ ๊ฑธ์ณ ํด์๋ฅผ ๊ณต๋ถํ๋ค ใ ๊ณต๋ถํ๋ฉด์ ์๊ฐ ํจ์จ์ ๋์ผ ์ ์๋ ์ต๋ํ ํ์ฉํ๋ฉด ์ข์ ์๋ฃ๊ตฌ์กฐ์ธ์ง ์๊ฒ ๋๋ค. ์์ฃผ ์จ์ผ์งใ ใ
๋ํ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ map.get(c)๊ฐ null์ผ ๊ฒฝ์ฐ์ ์๋๊ฒฝ์ฐ๋ก ๋๋ด๋ ๊ธฐ์กด ์ฝ๋์ ๋ผ์ธ์ ์ข ๋ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ๋ ์๊ฐํ๊ฒ ๋๋๋ฐ, getOrDefault ํจ์๋ฅผ ์ฐ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค!
for(String c : completion) {
map.put(c, map.getOrDefault(c, 0)+1);
}
์ด๋ ๊ฒ!
์ฝํ ์ค๋น๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ์ง ์ผ๋ง ๋์ง ์์ ์ฝ๋์ ๋ฏธํกํ ์ ์ด ๋ง์ ์ ์์ต๋๋ค.
๋ถ์กฑํ ์ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ์์ผ๋ก์ ํฌ์คํ ์ ๋ฐ์ํ๊ฒ ์ต๋๋ค! ๋ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค :)
-budtree