ν΄λν°μ μνμ μ»΄ν¨ν° ν€λ³΄λ μνκ³Όλ λ€λ₯΄κ² νλμ ν€μ μ¬λ¬ κ°μ λ¬Έμκ° ν λΉλ μ μμ΅λλ€. ν€ νλμ μ¬λ¬ λ¬Έμκ° ν λΉλ κ²½μ°, λμΌν ν€λ₯Ό μ°μν΄μ λΉ λ₯΄κ² λλ₯΄λ©΄ ν λΉλ μμλλ‘ λ¬Έμκ° λ°λλλ€.
μλ₯Ό λ€μ΄, 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;
}
}
νλ₯νλ₯ νλ€λΌ(?)