๋ณธ๋ฌธ
์์ฃผํ์ง ๋ชปํ ์ ์ #ํด์ #level1
CS Fundamentals/Algorithm & Logic 2021. 1. 7. 18:53

๐ก ํด์
ํด์๋ Key-value์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
๐ก ํ์ด1 - HashMap
HashMap์ Participant์ ์ฐธ๊ฐ์๋ฅผ key ๊ฐ์ผ๋ก, value๋ +1์ ๋ฃ์ด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํด์ ๋งต์ ์ด์ฉ ํ์ฌ Completion์ ๋ช ๋จ์ด HashMap์ key ๊ฐ์ ์กด์ฌํ๋ฉด value์ -1ํด ์ค๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฐ key๊ฐ์ value๊ฐ์ด 0์ด ์๋ ๊ฒฝ์ฐ ์์ฃผํ์ง ๋ชปํ ๋ช ๋จ์ ๊ตฌํ ์ ์์ต๋๋ค.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1);
for (String player : completion) hm.put(player, hm.get(player) - 1);
for (String key : hm.keySet()) {
if (hm.get(key) != 0){
answer = key;
}
}
return answer;
}
}
P.S. getOrDefault
์ฐพ๋ ํค๊ฐ ์กด์ฌํ๋ค๋ฉด ์ฐพ๋ ํค์ ๊ฐ์ ๋ฐํํ๊ณ ์๋ค๋ฉด ๊ธฐ๋ณธ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋
getOrDefault(Object key, V DefaultValue)
-. key : ๊ฐ์ ๊ฐ์ ธ์์ผ ํ๋ ์์์ ํค์ ๋๋ค.
-. defaultValue : ์ง์ ๋ ํค๋ก ๋งคํ๋ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ๋ฐํ๋์ด์ผ ํ๋ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
→ ๋ฐํ๊ฐ : ์ฐพ๋ key๊ฐ ์กด์ฌํ๋ฉด ํด๋น key์ ๋งคํ๋์ด ์๋ ๊ฐ์ ๋ฐํํ๊ณ , ์๋๋ผ๋ฉด defualt ๋ฐํ๋ฉ๋๋ค.
public static void main(String[] args) {
String[] alphabet = { "A", "B", "C", "A" };
HashMap<String, Integer> hm = new HashMap<>();
for (String key : alphabet)
hm.put(key, hm.getOrDefault(key, 0) + 1);
// ๊ฒฐ๊ณผ : {A=2, B=1, C=1}
System.out.println("๊ฒฐ๊ณผ : " + hm);
}
๐ก ํ์ด2 - Sort
๋ค์ ํ์ด๋ Sort๋ฅผ ์ด์ฉํ ํ์ด์ ๋๋ค. Participant ๋ฐฐ์ด๊ณผ Completion ๋ฐฐ์ด์ ์์๋๋ก ์ ๋ ฌํ์ฌ ๋๊ณ , ์ผ์นํ์ง ์๋ ์ ์์ ์ธ๋ฑ์ค๋ฅผ ๋ฆฌํดํ๋ฉด ์ฐธ๊ฐํ์ง ์๋ ์ ์์ ๋ช ๋จ์ ๊ตฌํ ์ ์์ต๋๋ค.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
int i;
for ( i=0; i<completion.length; i++){
if (!participant[i].equals(completion[i])){
return participant[i];
}
}
return participant[i];
}
}


๋๊ธ