π λ¬Έμ λ°λ‘κ°κΈ°
https://school.programmers.co.kr/learn/courses/30/lessons/159994
νλ‘κ·Έλλ¨Έμ€
SWκ°λ°μλ₯Ό μν νκ°, κ΅μ‘μ Total Solutionμ μ 곡νλ κ°λ°μ μ±μ₯μ μν λ² μ΄μ€μΊ ν
programmers.co.kr
π λ¬Έμ μμ½

π λ¬Έμ μν©
μ½λλ μμ΄ λ¨μ΄κ° μ ν μΉ΄λ λμΉ 2κ°λ₯Ό μ λ¬Ό λ°μλ€.
μ°λ¦¬λ μ΄ μΉ΄λ λμΉλ€μ μλ μΉ΄λλ€μ μ¬μ©ν΄μ μνλ μμμ λ¬Έμ₯μ λ§λ€ μ μλμ§ νμΈν΄μΌ νλ€.
π’ μΉ΄λ μ¬μ© κ·μΉ
- μνλ μΉ΄λ λμΉμμ 맨 μμ μΉ΄λλΆν° μμλλ‘ ν μ₯μ© μ¬μ©ν΄μΌ νλ€. (건λλ°κΈ° λΆκ°)
- ν λ² μ¬μ©ν μΉ΄λλ λ€μ μ¬μ©ν μ μλ€.
- μΉ΄λ λμΉμ μλ λ¨μ΄μ μμλ λ°κΏ μ μλ€.
π― λͺ©ν
- cards1κ³Ό cards2μ μλ λ¨μ΄λ€μ μ΄μ©ν΄μ
μ£Όμ΄μ§ goal λ°°μ΄μ μ νν λ§λ€ μ μλμ§ νλ³ν΄μΌ νλ€. - λ§λ€ μ μμΌλ©΄ "Yes", λ§λ€ μ μμΌλ©΄ "No"λ₯Ό λ°ννλ€.
π μμ
cards1 = ["i", "drink", "water"]
cards2 = ["want", "to"]
goal = ["i", "want", "to", "drink", "water"]
- "i" ππ» cards1μμ κΊΌλ΄κΈ°
- "want" ππ» cards2μμ κΊΌλ΄κΈ°
- "to" ππ» cards2μμ κΊΌλ΄κΈ°
- "drink" ππ» cards1μμ κΊΌλ΄κΈ°
- "water" ππ» cards1μμ κΊΌλ΄κΈ°
μ¦, goal λ°°μ΄μ μ νν λ§λ€ μ μμΌλ―λ‘ "Yes"λ₯Ό λ°ννλ©΄ λλ€.
cards1 = ["i", "water", "drink"]
cards2 = ["want", "to"]
goal = ["i", "want", "to", "drink", "water"]
- "i" ππ» cards1μμ κΊΌλ΄κΈ°
- "want" ππ» cards2μμ κΊΌλ΄κΈ°
- "to" ππ» cards2μμ κΊΌλ΄κΈ°
- "drink" ππ» cards1μμ κΊΌλ΄λ €κ³ νμΌλ, "drink" μμ μλ "water"λ₯Ό μμ§ μ¬μ©νμ§ μμμΌλ―λ‘ "drink"λ₯Ό κΊΌλΌ μ μμ
μ¦, goal λ°°μ΄μ μμ±ν μ μμΌλ―λ‘ "No"λ₯Ό λ°ννλ©΄ λλ€.
π‘ μμ΄λμ΄
1οΈβ£ ν¬μΈν° λ κ°λ‘ 맨 μλ§ κ°λ¦¬ν€κΈ°
- i ππ» cards1μ νμ¬ λ§¨ μ μΈλ±μ€λ₯Ό κ°λ¦¬ν€λλ‘ νλ€.
- j ππ» cards2μ νμ¬ λ§¨ μ μΈλ±μ€λ₯Ό κ°λ¦¬ν€λλ‘ νλ€.
int i = 0;
int j = 0;
2οΈβ£ κ° λ¨μ΄ gμ λν΄μ 그리λνκ² μ ννκΈ°
- cards1[i] == gμ΄λ©΄ ππ» i++ ν΄μ£ΌκΈ° (cards1μμ ν μ₯ μ¬μ©νλ€λ μλ―Έ)
- cards2[j] == gμ΄λ©΄ ππ» j++ ν΄μ£ΌκΈ° (cards2μμ ν μ₯ μ¬μ©νλ€λ μλ―Έ)
- λ λ€ μλλ©΄ ππ» κ·μΉμ λμ΄μ λ§λ€ μ μλ€λ μλ―Έμ΄λ―λ‘ "No" λ°ννκΈ°
for(String g : goal){
if(i < cards1.length && cards1[i].equals(g)){
i++;
}
else if(j < cards2.length && cards2[j].equals(g)){
j++;
}
else{
return "No";
}
}
μμ κ°μ΄ 그리λνκ² μ ννλ μ΄μ λ,
goalμ μμκ° κ³ μ μ΄κ³ , κ° μΉ΄λ λμΉμμλ μμμ λΆν° μ°¨λ‘λλ‘λ§ μΉ΄λλ₯Ό λ½μ μ μμΌλ―λ‘
νμ¬ νμν λ¨μ΄λ₯Ό μ§κΈ λΉμ₯ λ½λ μ ν μΈμλ λ λμ λμμ΄ μλ€.
π©π»π» μ΅μ’ μ½λ
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
int i = 0;
int j = 0;
for(String g : goal){
if(i < cards1.length && cards1[i].equals(g)){
i++;
}
else if(j < cards2.length && cards2[j].equals(g)){
j++;
}
else{
return "No";
}
}
return "Yes";
}
}
π μκ° λ³΅μ‘λ
1οΈβ£ goal μν
for(String g : goal) {
....
}
goal λ°°μ΄μ κΈΈμ΄λ₯Ό Nμ΄λΌκ³ ν λ,
μ΄ λ£¨νλ μ΅λ Nλ² λ°λ³΅νλ―λ‘ μκ° λ³΅μ‘λλ O(N)μ΄λ€.
μ΄κ² μ΄μΈμ μ°μ°λ€μ λͺ¨λ λ¨μ λΉκ΅ λ° λμ μ΄λ―λ‘ O(1)μ μκ° λ³΅μ‘λλ₯Ό κ°λλ€.
ππ» λ°λΌμ μ΅μ’ μκ° λ³΅μ‘λλ O(N)μ΄λ€.
(μ΄λ Nμ goal λ°°μ΄μ κΈΈμ΄μ΄λ€.)
'π» μ½ν > π JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [νλ‘κ·Έλλ¨Έμ€/JAVA] λμΆ© λ§λ μν (3) | 2025.08.14 |
|---|---|
| [νλ‘κ·Έλλ¨Έμ€/JAVA] λ§μΉ νκΈ° (4) | 2025.08.13 |
| [νλ‘κ·Έλλ¨Έμ€/JAVA] μΆμ΅ μ μ (5) | 2025.08.11 |
| [νλ‘κ·Έλλ¨Έμ€/JAVA] λ¬λ¦¬κΈ° κ²½μ£Ό (6) | 2025.08.10 |
| [νλ‘κ·Έλλ¨Έμ€/JAVA] λ°μ΄ν° λΆμ (5) | 2025.08.09 |