π μ½λ©ν μ€νΈ
βπ» Github
λ¬Έμ μ€λͺ
ν΄λν°μ μνμ μ»΄ν¨ν° ν€λ³΄λ μνκ³Όλ λ€λ₯΄κ² νλμ ν€μ μ¬λ¬ κ°μ λ¬Έμκ° ν λΉλ μ μμ΅λλ€. ν€ νλμ μ¬λ¬ λ¬Έμκ° ν λΉλ κ²½μ°, λμΌν ν€λ₯Ό μ°μν΄μ λΉ λ₯΄κ² λλ₯΄λ©΄ ν λΉλ μμλλ‘ λ¬Έμκ° λ°λλλ€.
μλ₯Ό λ€μ΄, 1λ² ν€μ "A", "B", "C" μμλλ‘ λ¬Έμκ° ν λΉλμ΄ μλ€λ©΄ 1λ² ν€λ₯Ό ν λ² λλ₯΄λ©΄ "A", λ λ² λλ₯΄λ©΄ "B", μΈ λ² λλ₯΄λ©΄ "C"κ° λλ μμ λλ€.
κ°μ κ·μΉμ μ μ©ν΄ μ무λ κ²λ λ§λ ν΄λν° μνμ΄ μμ΅λλ€. μ΄ ν΄λν° μνμ ν€μ κ°μκ° 1κ°λΆν° μ΅λ 100κ°κΉμ§ μμ μ μμΌλ©°, νΉμ ν€λ₯Ό λλ μ λ μ λ ₯λλ λ¬Έμλ€λ 무μμλ‘ λ°°μ΄λμ΄ μμ΅λλ€. λ, κ°μ λ¬Έμκ° μν μ 체μ μ¬λ¬ λ² ν λΉλ κ²½μ°λ μκ³ , ν€ νλμ κ°μ λ¬Έμκ° μ¬λ¬ λ² ν λΉλ κ²½μ°λ μμ΅λλ€. μ¬μ§μ΄ μμ ν λΉλμ§ μμ κ²½μ°λ μμ΅λλ€. λ°λΌμ λͺλͺ λ¬Έμμ΄μ μμ±ν μ μμ μλ μμ΅λλ€.
μ΄ ν΄λν° μνμ μ΄μ©ν΄ νΉμ λ¬Έμμ΄μ μμ±ν λ, ν€λ₯Ό μ΅μ λͺ λ² λλ¬μΌ κ·Έ λ¬Έμμ΄μ μμ±ν μ μλμ§ μμλ³΄κ³ μ ν©λλ€.
1λ² ν€λΆν° μ°¨λ‘λλ‘ ν λΉλ λ¬Έμλ€μ΄ μμλλ‘ λ΄κΈ΄ λ¬Έμμ΄λ°°μ΄ keymapκ³Ό μ λ ₯νλ €λ λ¬Έμμ΄λ€μ΄ λ΄κΈ΄ λ¬Έμμ΄ λ°°μ΄ targetsκ° μ£Όμ΄μ§ λ, κ° λ¬Έμμ΄μ μμ±νκΈ° μν΄ ν€λ₯Ό μ΅μ λͺ λ²μ© λλ¬μΌ νλμ§ μμλλ‘ λ°°μ΄μ λ΄μ return νλ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ.
λ¨, λͺ©ν λ¬Έμμ΄μ μμ±ν μ μμ λλ -1μ μ μ₯ν©λλ€.
μ νμ¬ν
- 1 ≤ keymapμ κΈΈμ΄ ≤ 100
- 1 ≤ keymapμ μμμ κΈΈμ΄ ≤ 100
- keymap[i]λ i + 1λ² ν€λ₯Ό λλ μ λ μμλλ‘ λ°λλ λ¬Έμλ₯Ό μλ―Έν©λλ€.
- μλ₯Ό λ€μ΄ keymap[0] = "ABACD" μΈ κ²½μ° 1λ² ν€λ₯Ό ν λ² λλ₯΄λ©΄ A, λ λ² λλ₯΄λ©΄ B, μΈ λ² λλ₯΄λ©΄ A κ° λ©λλ€.
- keymapμ μμμ κΈΈμ΄λ μλ‘ λ€λ₯Ό μ μμ΅λλ€.
- keymapμ μμλ μνλ²³ λλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- 1 ≤ targetsμ κΈΈμ΄ ≤ 100
- 1 ≤ targetsμ μμμ κΈΈμ΄ ≤ 100
- targetsμ μμλ μνλ²³ λλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€
μ μΆλ ₯ μ
keymap | targets | result |
["ABACD", "BCEFD"] | ["ABCD","AABB"] | [9, 4] |
["AA"] | ["B"] | [-1] |
["AGZ", "BSSS"] | ["ASA","BGZ"] | [4, 6] |
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
- "ABCD"μ κ²½μ°,
- 1λ² ν€ ν λ² → A
- 2λ² ν€ ν λ² → B
- 2λ² ν€ λ λ² → C
- 1λ² ν€ λ€μ― λ² → D
- λ°λΌμ μ΄ν©μΈ 9λ₯Ό 첫 λ²μ§Έ μΈλ±μ€μ μ μ₯ν©λλ€.
- "AABB"μ κ²½μ°,
- 1λ² ν€ ν λ² → A
- 1λ² ν€ ν λ² → A
- 2λ² ν€ ν λ² → B
- 2λ² ν€ ν λ² → B
- λ°λΌμ μ΄ν©μΈ 4λ₯Ό λ λ²μ§Έ μΈλ±μ€μ μ μ₯ν©λλ€.
- κ²°κ³Όμ μΌλ‘ [9,4]λ₯Ό return ν©λλ€.
μ μΆλ ₯ μ #2
- "B"μ κ²½μ°, 'B'κ° μ΄λμλ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ -1μ 첫 λ²μ§Έ μΈλ±μ€μ μ μ₯ν©λλ€.
- κ²°κ³Όμ μΌλ‘ [-1]μ return ν©λλ€.
μ μΆλ ₯ μ #3
- "ASA"μ κ²½μ°,
- 1λ² ν€ ν λ² → A
- 2λ² ν€ λ λ² → S
- 1λ² ν€ ν λ² → A
- λ°λΌμ μ΄ν©μΈ 4λ₯Ό 첫 λ²μ§Έ μΈλ±μ€μ μ μ₯ν©λλ€.
- "BGZ"μ κ²½μ°,
- 2λ² ν€ ν λ² → B
- 1λ² ν€ λ λ² → G
- 1λ² ν€ μΈ λ² → Z
- λ°λΌμ μ΄ν©μΈ 6μ λ λ²μ§Έ μΈλ±μ€μ μ μ₯ν©λλ€.
- κ²°κ³Όμ μΌλ‘ [4, 6]μ return ν©λλ€.
λ¬Έμ νμ΄
λμ νμ΄
import Foundation
func solution(_ keymap:[String], _ targets:[String]) -> [Int] {
// λ¬Έμμ μ΅μ ν΄λ¦ μ
var clickOfChar = Dictionary<Character, Int>()
var count: Int = 0
var answer = [Int]()
// λ¬Έμμ μ΅μ ν΄λ¦μ μ°ΎκΈ°
func searchMinClick(_ alphabet: Character) -> Int {
for key in keymap {
if key.contains(alphabet) {
let value = Array(key).firstIndex(of: alphabet)! + 1
if value < clickOfChar[alphabet] ?? -1 || clickOfChar[alphabet] == nil {
clickOfChar[alphabet] = value
}
}
}
return clickOfChar[alphabet] ?? -1
}
// λ¬Έμμ΄μ μ΅μ ν΄λ¦μ ꡬνκΈ°
for str in targets {
for char in str {
if let c = clickOfChar[char] {
count += c
}else{
let s = searchMinClick(char)
if s == -1 {
count = -1
break
}else {
count += s
}
}
}
answer.append(count)
count = 0
}
return answer
}
μ°μ 무쑰건 keymapκ³Ό targetsμ νμν΄μΌνλ€λ μκ°μ
μκ°λ³΅μ‘λλ₯Ό μ΄λ»κ² νλ©΄ μ€μΌ μ μμκΉλ₯Ό μκ°νλ κ² κ°λ€.
λλ λμ λ리μ λ¬Έμμ κ·Έ λ¬Έμμ μ΅μ ν΄λ¦μλ₯Ό λ£κΈ°λ‘ νλ€.
κ·ΈλΌ targetsλ₯Ό νμνμ¬ λ¬Έμ λ₯Ό ν λ, μ΄λ―Έ μΆλ‘ νλ λ¬ΈμλΌλ©΄ λ λ€μ λ°λ³΅λ¬Έμ λμ§ μμλ λλκΉ
λ§μ½ “ABC”λ¬Έμμ΄μ μ΅μ ν΄λ¦μλ₯Ό μ°Ύκ³ μ ν λ,
“A”λΌλ λ¬Έμλ₯Ό νμν΄μΌνλλ° μ΄λ―Έ μμμ “ERTA”λ¬Έμμ΄μ νμνμ¬
λμ λλ¦¬μ “A”μ μ΅μ ν΄λ¦ μκ° 1μ΄λΌκ³ μΆλ‘ μ νλ€λ©΄
λ€μ λ°λ³΅λ¬Έμ λλ©΄ μ΅μ ν΄λ¦ μλ₯Ό μ°Ύμ§ μμλ λλ€.
μ΄λ κ² νκΈ° μν΄μλ ν΄λΉ λ¬Έμμ λν μ΅μ ν΄λ¦μλ₯Ό ꡬνλ λΆλΆμ΄ λ°λ‘ ꡬνμ΄ λμ΄μΌ νλ€.
κ·Έλμ ν¨μμμ ν¨μλ‘ κ΅¬νμ νμλ€.
λμ λ리μ μ΅μ λ¬Έμ ν΄λ¦μλ₯Ό λμ νκΈ° μν΄μλ
μ°μ ν΄λΉ λ¬Έμμ΄μ λ¬Έμκ° λ€μ΄μλμ§λ₯Ό νλ¨μ νκ³
λ¬Έμμ΄μ΄ λ€μ΄μλ€λ©΄, λͺ λ²μ§Έ λ¬Έμμ΄μΈμ§λ₯Ό λ°°μ΄μ μΈλ±μ€λ₯Ό νμ©ν΄ ꡬνλ€.
ꡬν μΈλ±μ€κ° μ΄λ―Έ λμ λ리μ μλμ§ μλμ§λ₯Ό νλ¨νκ³
λ§μ½ μλ€λ©΄ κ°λΉκ΅λ₯Ό ν΅ν΄ λ μμ ν΄λ¦μλ₯Ό μ λ°μ΄νΈ νλλ‘ κ΅¬νμ νμλ€.
μν.. μ§μ§ λμΆ© λ§λ€μλ€..