
ν΄λν°μ μνμ μ»΄ν¨ν° ν€λ³΄λ μνκ³Όλ λ€λ₯΄κ² νλμ ν€μ μ¬λ¬ κ°μ λ¬Έμκ° ν λΉλ μ μμ΅λλ€. ν€ νλμ μ¬λ¬ λ¬Έμκ° ν λΉλ κ²½μ°, λμΌν ν€λ₯Ό μ°μν΄μ λΉ λ₯΄κ² λλ₯΄λ©΄ ν λΉλ μμλλ‘ λ¬Έμκ° λ°λλλ€.
μλ₯Ό λ€μ΄, 1λ² ν€μ "A", "B", "C" μμλλ‘ λ¬Έμκ° ν λΉλμ΄ μλ€λ©΄ 1λ² ν€λ₯Ό ν λ² λλ₯΄λ©΄ "A", λ λ² λλ₯΄λ©΄ "B", μΈ λ² λλ₯΄λ©΄ "C"κ° λλ μμ λλ€.
κ°μ κ·μΉμ μ μ©ν΄ μ무λ κ²λ λ§λ ν΄λν° μνμ΄ μμ΅λλ€. μ΄ ν΄λν° μνμ ν€μ κ°μκ° 1κ°λΆν° μ΅λ 100κ°κΉμ§ μμ μ μμΌλ©°, νΉμ ν€λ₯Ό λλ μ λ μ λ ₯λλ λ¬Έμλ€λ 무μμλ‘ λ°°μ΄λμ΄ μμ΅λλ€. λ, κ°μ λ¬Έμκ° μν μ 체μ μ¬λ¬ λ² ν λΉλ κ²½μ°λ μκ³ , ν€ νλμ κ°μ λ¬Έμκ° μ¬λ¬ λ² ν λΉλ κ²½μ°λ μμ΅λλ€. μ¬μ§μ΄ μμ ν λΉλμ§ μμ κ²½μ°λ μμ΅λλ€. λ°λΌμ λͺλͺ λ¬Έμμ΄μ μμ±ν μ μμ μλ μμ΅λλ€.
μ΄ ν΄λν° μνμ μ΄μ©ν΄ νΉμ λ¬Έμμ΄μ μμ±ν λ, ν€λ₯Ό μ΅μ λͺ λ² λλ¬μΌ κ·Έ λ¬Έμμ΄μ μμ±ν μ μλμ§ μμλ³΄κ³ μ ν©λλ€.
1λ² ν€λΆν° μ°¨λ‘λλ‘ ν λΉλ λ¬Έμλ€μ΄ μμλλ‘ λ΄κΈ΄ λ¬Έμμ΄λ°°μ΄ keymapκ³Ό μ
λ ₯νλ €λ λ¬Έμμ΄λ€μ΄ λ΄κΈ΄ λ¬Έμμ΄ λ°°μ΄ targetsκ° μ£Όμ΄μ§ λ, κ° λ¬Έμμ΄μ μμ±νκΈ° μν΄ ν€λ₯Ό μ΅μ λͺ λ²μ© λλ¬μΌ νλμ§ μμλλ‘ λ°°μ΄μ λ΄μ return νλ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
λ¨, λͺ©ν λ¬Έμμ΄μ μμ±ν μ μμ λλ -1μ μ μ₯ν©λλ€.
keymap[i]λ i + 1λ² ν€λ₯Ό λλ μ λ μμλλ‘ λ°λλ λ¬Έμλ₯Ό μλ―Έν©λλ€.keymap[0] = "ABACD" μΈ κ²½μ° 1λ² ν€λ₯Ό ν λ² λλ₯΄λ©΄ A, λ λ² λλ₯΄λ©΄ B, μΈ λ² λλ₯΄λ©΄ A κ° λ©λλ€.keymapμ μμμ κΈΈμ΄λ μλ‘ λ€λ₯Ό μ μμ΅λλ€.keymapμ μμλ μνλ²³ λλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.targetsμ κΈΈμ΄ β€ 100targetsμ μμμ κΈΈμ΄ β€ 100targetsμ μμλ μνλ²³ λλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.| keymap | targets | result |
|---|---|---|
| ["ABACD", "BCEFD"] | ["ABCD","AABB"] | [9, 4] |
| ["AA"] | ["B"] | [-1] |
| ["AGZ", "BSSS"] | ["ASA","BGZ"] | [4, 6] |
keymapκ³Ό targetsλ°°μ΄μ μννλ©΄μ λ¬Έμλ₯Ό νλμ© μΆμΆνκΈ° μν΄, forλ¬Έμ μ¬λ¬ λ² μ¬μ©νμλ€.
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
for (int i = 0; i < targets.length; i++) {
String target = targets[i];
for (char c : target.toCharArray()) {
int minIndex = 100;
for (String key : keymap) {
int index = key.indexOf(c);
if (index != -1 && index < minIndex) {
minIndex = index;
}
}
answer[i] += minIndex + 1;
}
}
return answer;
}
μ°μ , String λ³μ targetμλ νμ¬ ν€λ³΄λ μνμΌλ‘ λ§λ€μ΄μΌ ν λ¬Έμμ΄μ λ΄μμ£Όμλ€.
κ·Έλ¦¬κ³ , λ¬Έμμ΄ targetμμ λ¬Έμλ₯Ό νλμ© μΆμΆνκ³ , keymapμμ κ° λ²νΌμ μννλ©΄μ λλ¬μ μ
λ ₯ν΄μΌ ν λ¬Έμκ° λ²νΌμ λͺ λ²μ§Έμ μλ μ§ κ΅¬ν΄μ£Όμλ€.
μ΄ λ indexOf()ν¨μλ₯Ό μ¬μ©ν΄ cμ μΌμΉνλ λ¬Έμκ° λ²νΌ keyμ΄ λͺ λ²μ§Έ μΈλ±μ€μ μλ μ§ κ΅¬νκ³ , indexκ° μ΅μκ° λμ΄μΌ νκΈ° λλ¬Έμ, 쑰건문μ ν΅ν΄ minIndexμ λ²νΌμ λλ¬μΌ νλ μ΅μ νμλ₯Ό μ μ₯ν΄μ£Όμλ€.
λ²νΌμ λλ₯΄λ νμλ μΈλ±μ€μ 1μ λν΄μ£Όμ΄μΌ νκΈ° λλ¬Έμ, answerλ°°μ΄μ μ μ₯ν λ minIndexμ 1μ λν΄ μ μ₯ν΄ μ£Όμλ€.
μ΄λ κ² νλ©΄, λ²νΌμΌλ‘ μ λ ₯νκ³ μ νλ λ¬Έμμ΄μ 무쑰건 μ λ ₯ν μ μλ€λ 쑰건μΌλ‘ μ λ΅μ ꡬν μ μλ€.
μ΄μ λͺ©ν λ¬Έμμ΄μ μμ±ν μ μμ λ -1μ μ μ₯νλλ‘ μ½λλ₯Ό μΆκ°ν΄μΌ νλ€.
λͺ©ν λ¬Έμμ΄μ μμ±ν μ μλ κ²½μ°λ₯Ό κ³ λ €νκΈ° μν΄, answerμ λ²νΌ λλ₯Έ νμλ₯Ό μ μ₯ν λ 쑰건문μ μΆκ°ν΄ μ£Όμλ€.
if (minIndex < 100 && answer[i] != -1) {
answer[i] += minIndex + 1;
}
else {
answer[i] = -1;
}
μνλ λ¬Έμλ₯Ό keyμμ λͺ»μ°Ύμμ λ minIndexμλ κ°μ΄ μ μ₯λμ§ μκΈ° λλ¬Έμ, minIndexλ μ΄κΈ°ν κ°μΈ 100μ΄ μ μ₯λμ΄ μμ κ²μ΄λ€.
λ°λλ‘ λ¬Έμλ₯Ό keyμμ μ°Ύμμ κ²½μ°μλ minIndexκ° λ¬΄μ‘°κ±΄ 100λ³΄λ€ μμ κ²μ΄λ€.
λ°λΌμ ν΄λΉ 쑰건μ λ°λΌ μνλ λ¬Έμλ₯Ό μ°Ύμμ κ²½μ°μλ κΈ°μ‘΄μ μ½λλλ‘ μ§νλλλ‘ ν΄μ£Όμκ³ ,
λ¬Έμλ₯Ό μ°Ύμ§ λͺ»νμ κ²½μ°μλ -1μ΄ μ μ₯λλλ‘ μ½λλ₯Ό μΆκ°ν΄ μ£Όμλ€.
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
for (int i = 0; i < targets.length; i++) {
String target = targets[i];
for (char c : target.toCharArray()) {
int minIndex = 100;
for (String key : keymap) {
int index = key.indexOf(c);
if (index != -1 && index < minIndex) {
minIndex = index;
}
}
if (minIndex < 100 && answer[i] != -1) {
answer[i] += minIndex + 1;
}
else {
answer[i] = -1;
}
}
}
return answer;
}
}

νλ₯νλ₯ νλ€λΌ(?)