μΈμ΄: java
λ¬Έμ μ€λͺ
μλ§μ λ§λΌν€ μ μλ€μ΄ λ§λΌν€μ μ°Έμ¬νμμ΅λλ€. λ¨ ν λͺ μ μ μλ₯Ό μ μΈνκ³ λ λͺ¨λ μ μκ° λ§λΌν€μ μμ£Όνμμ΅λλ€. λ§λΌν€μ μ°Έμ¬ν μ μλ€μ μ΄λ¦μ΄ λ΄κΈ΄ λ°°μ΄ `participant`μ μμ£Όν μ μλ€μ μ΄λ¦μ΄ λ΄κΈ΄ λ°°μ΄ `completion`μ΄ μ£Όμ΄μ§ λ, μμ£Όνμ§ λͺ»ν μ μμ μ΄λ¦μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
μ νμ¬ν
λ§λΌν€ κ²½κΈ°μ μ°Έμ¬ν μ μμ μλ 1λͺ μ΄μ 100,000λͺ μ΄νμ λλ€.
`completion`μ κΈΈμ΄λ `participant`μ κΈΈμ΄λ³΄λ€ 1 μμ΅λλ€.
μ°Έκ°μμ μ΄λ¦μ 1κ° μ΄μ 20κ° μ΄νμ μνλ²³ μλ¬Έμλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
μ°Έκ°μ μ€μλ λλͺ μ΄μΈμ΄ μμ μ μμ΅λλ€.
π νμ΄(1/3) - ArrayList
`ArrayList`μ `indexOf()`λ μμμλΆν° κ²μν΄ μΌμΉνλ κ°μ²΄ μ€ κ°μ₯ λ¨Όμ λ°κ²¬ν κ°μ²΄μ μΈλ±μ€λ₯Ό λ°ννλ€. μ°Ύμ§ λͺ»νλ©΄ -1μ λ°ννλ€. λ°λΌμ `indexOf()`λ‘ ν΄λΉ κ°μ²΄μ μΈλ±μ€λ₯Ό μ°Ύμ λ€ ν΄λΉ μΈλ±μ€λ₯Ό μ¬μ©ν΄ `remove()`λ₯Ό νλ €κ³ νλ€.
κ·Έλ¬λ `remove()` λ©μλλ `indexOf()`μ²λΌ μμμλΆν° κ²μν΄ μΌμΉνλ κ°μ²΄ μ€ κ°μ₯ λ¨Όμ λ°κ²¬ν κ°μ²΄ νλλ₯Ό μμ νλ―λ‘ μμ κ³Όμ μ΄ λΆνμνλ€. completionμ κΈΈμ΄λ participantμ κΈΈμ΄λ³΄λ€ 1 μλ€λ κ²μ μμ£Όνμ§ λͺ»ν μ μκ° λ°λμ ν λͺ μ μ‘΄μ¬νλ€λ μλ―Έλ‘, `p.get()`μ λμ Έμ€ λ§€κ°λ³μλ₯Ό 0μΌλ‘ λμ΄λ `p` λ΄μ κ°μ²΄κ° λ°λμ νλλ μ‘΄μ¬νκΈ° λλ¬Έμ nullμ΄ λμ€μ§ μλλ€.(κ²μ¦ν νμ μμ)
// μ νμ± ν΅κ³Ό, ν¨μ¨μ± μ€ν¨(μκ° μ΄κ³Ό)
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
List<String> p = new ArrayList<>(Arrays.asList(participant));
for(int i = 0; i < completion.length; i++){
p.remove(completion[i]);
}
return p.get(0);
}
}
κ·Έλ¬λ `ArrayList`λ₯Ό μ¬μ©νλ©΄μ forλ¬ΈμΌλ‘ μ€κ° μΈλ±μ€ μμ λ₯Ό λͺ λ²μ΄λ λ°λ³΅νλ κ²μ μ’μ λ°©λ²μ΄ μλλ€. `remove(Object o)` λ©μλμ κ²½μ° λ΄λΆμμ nullμ΄ μλμ§ νμΈ νμ `get(o)` λ©μλλ₯Ό λΆλ₯΄κ³ booleanμΌλ‘ μν κ²°κ³Ό(μ§μμ‘λμ§ μλμ§)λ₯Ό λ±μ΄λ΄κΈ° λλ¬Έμ μκ° λ³΅μ‘λλ O(n)μΌλ‘ μ±λ₯μ΄ λμλ€κ³ ν μλ μμΌλ, `ArrayList`λ μ€κ°μ μΈλ±μ€κ° μ§μμ§κ² λλ©΄ ν μμμ μΈλ±μ€κ° λΉκ²¨μ§λ©΄μ λ°°μ΄μ 볡μ¬κ° μΌμ΄λλ―λ‘ μ±λ₯ μ νλ₯Ό μΌμΌν¨λ€.
[μλ£κ΅¬μ‘°] ArrayList - λ°°μ΄μ λ¨μ μ 보μν μλ£κ΅¬μ‘°
π νμ΄(2/3) - λ°°μ΄(Arrays)
`completion`μ κΈΈμ΄λ `participant`μ κΈΈμ΄λ³΄λ€ νμ 1μ΄ μκΈ° λλ¬Έμ μμ£Όνμ§ λͺ»ν μ μλ λ°λμ ν λͺ μ΄ μ‘΄μ¬νλ€. κ·Έλ λ€λ©΄ λ λ°°μ΄ λͺ¨λ μ λ ¬ ν νλμ© λΉκ΅ν΄ λ΄€μ λ μ€κ°μ κ°μ μΈλ±μ€μ΄μ§λ§ λ€λ₯Έ μ΄λ¦μ΄λΌλ©΄, μμ£Ό μ μ λͺ©λ‘μ μ°Έμ¬ μ μ μ΄λ¦μ΄ μλ€λ λ»μ΄ λλ―λ‘ `participant`μ ν΄λΉ μΈλ±μ€ μμλ₯Ό λ°ννλ©΄ λλ€.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
for(int i = 0; i < participant.length; i++){
if(!participant[i].equals(completion[i])){
return participant[i];
}
}
return answer;
}
}
κ·Έλ¬λ `completion` λ°°μ΄μ κΈΈμ΄κ° `participant`λ³΄λ€ νμ μκΈ° λλ¬Έμ μΈλ±μ€ iκ° κ³μ μ¦κ°νμ¬ `participant`μ λ§μ§λ§ μΈλ±μ€λ₯Ό κ°λ¦¬ν€κ² λλ κ²½μ° `completion[i]`λ λ°λμ μλ μΈλ±μ€κ° λλ―λ‘ `ArrayIndexOutOfBoundsException`μ΄ λ°μνλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ try - catchλ¬Έμ μμ±νμ¬ ν¨μλ₯Ό μμ±νλ€.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
for(int i = 0; i < participant.length; i++){
try{
if(!participant[i].equals(completion[i])){
return participant[i];
}
}catch(ArrayIndexOutOfBoundsException e){
return participant[i];
}
}
return answer;
}
}
π νμ΄(3/3) - HashMap
`participant` λͺ©λ‘μλ λλͺ μ΄μΈμ΄ μ‘΄μ¬νλ―λ‘ `HashSet`μ κ°μ λ£μΌλ©΄ κ°μ΄ μ¬λΌμ§κ² λλ€. λ°λΌμ `HashMap`μ μ¬μ©νμ¬ λλͺ μ΄μΈμ μΉ΄μ΄νΈλ₯Ό κ°μΌλ‘ 보κ΄νκΈ°λ‘ νλ€. `HashMap`μ μ°Έκ°μμ μ΄λ¦μ λ£λ, μ΄λ―Έ `HashMap`μ μ‘΄μ¬νλ μ΄λ¦μ΄λΌλ©΄ ν΄λΉ μ΄λ¦μ ν€λ‘ κ°μ§ κ°μ 1 μ¦κ°μν¨λ€. μ¬λ¬λͺ μ λλͺ μ΄μΈλ μΉ΄μ΄νΈν μ μλ€.
μ΄μ μμ£Όν μ¬λμ μΉ΄μ΄νΈμμ μ μΈμν¨λ€. `participant`λ `completion` μ§ν©μ ν¬ν¨νκ³ μκΈ° λλ¬Έμ `completion`μ μ‘΄μ¬νλ μ΄λ¦μ΄λΌλ©΄ λ°λμ `HashMap`μ ν΄λΉ μ΄λ¦μ ν€κ° μ‘΄μ¬νλ€. κ·Έλ¬λ―λ‘ `completion` λͺ©λ‘μ μ΄λ¦μ ν€λ‘ κ°μ§ κ°μ 1 κ°μμν¨λ€.
μ΄ κ³Όμ μ κ±°μ³ μμ£Όνλ€λ©΄ κ°μ΄ 0, μμ£Όνμ§ λͺ»νλ€λ©΄ 1 μ΄μμ κ°μ κ°μ§λ€. (λ¬Έμ μμλ μμ£Όνμ§ λͺ»ν μ μκ° λ¨ ν λͺ μ΄λΌκ³ νκΈ° λλ¬Έμ 1μ΄ μ‘΄μ¬ν κ²μ΄λ€.) κ°μ΄ 0μ΄ μλ ν€, μ¦ μ μμ μ΄λ¦μ λ°ννλ€.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < participant.length; i++){
if(map.containsKey(participant[i])){
map.put(participant[i], map.get(participant[i]) + 1);
}else{
map.put(participant[i], 1);
}
}
for(int i = 0; i < completion.length; i++){
map.put(completion[i], map.get(completion[i])-1);
}
for(int i = 0; i < participant.length; i++){
if(map.get(participant[i]) != 0){
return participant[i];
}
}
return answer;
}
}
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
'μ½λ©ν μ€νΈ > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Lv.1] Kλ²μ§Έ μ (0) | 2024.06.17 |
---|---|
[Lv.2] νλ Έμ΄μ ν (1) | 2024.06.12 |
[Lv.1] ν°μΌλͺ¬ (0) | 2024.01.08 |
[Lv.2] μ¬λ°λ₯Έ κ΄νΈ (0) | 2023.12.14 |
[Lv.1] μ κ· μμ΄λ μΆμ² (0) | 2023.11.17 |