[Swift] νλ‘κ·Έλλ¨Έμ€ LV.1 λμΆ© λ§λ μν
νλ‘κ·Έλλ¨Έμ€ LV.1 λͺ¨μ
λμΆ© λ§λ μν
λ¬Έμ μ€λͺ
ν΄λν°μ μνμ μ»΄ν¨ν° ν€λ³΄λ μνκ³Όλ λ€λ₯΄κ² νλμ ν€μ μ¬λ¬ κ°μ λ¬Έμκ° ν λΉλ μ μμ΅λλ€. ν€ νλμ μ¬λ¬ λ¬Έμκ° ν λΉλ κ²½μ°, λμΌν ν€λ₯Ό μ°μν΄μ λΉ λ₯΄κ² λλ₯΄λ©΄ ν λΉλ μμλλ‘ λ¬Έμκ° λ°λλλ€.
μλ₯Ό λ€μ΄, 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 dict = [String: Int]()
var keymap = keymap.map{$0.map{String($0)}}
var result = [Int]()
for k in keymap{
for i in k{
if dict[i] == nil {
dict[i] = k.firstIndex(of: i)!
}else{
dict[i] = min(dict[i]!, k.firstIndex(of: i)!)
}
}
}
for target in targets {
var sum = 0
for t in target.map{String($0)} {
if dict[t] == nil {
sum = -1
break
}else{
sum += dict[t]!+1
}
}
result.append(sum)
}
return result
}
keymapμ λ¬Έμλ₯Ό keyλ‘ μμλ₯Ό valueλ‘ κ°λ λμ λ리 dictλ₯Ό μ μΈνλ€.
keymapμ Stringν 2μ°¨μ λ°°μ΄λ‘ λ³ννλ€. κ²°κ΄κ°μ μ μ₯ν Intν λ°°μ΄ resultλ₯Ό μ μΈνλ€.
keymapμμ λ¬Έμλ₯Ό dictμ μ²μ μΆκ°ν λ(value == nil), λ¬Έμμ 첫 λ²μ§Έ μΈλ±μ€λ₯Ό μ μ₯νλ€.
μ΄λ―Έ dictμ λ¬Έμλ₯Ό keyλ‘ κ°λ valueκ° μ‘΄μ¬νλ€λ©΄, κΈ°μ‘΄ valueκ°κ³Ό λ¬Έμμ 첫 λ²μ§Έ μΈλ±μ€ μ€μμ μμ κ°μ μ μ₯νλ€.
(μ μΆλ ₯ μμ 1μμ 첫 λ²μ§Έ keymapμμ "B"μ μμΉλ 1λ²μΈλ°, λ λ²μ§Έ keymapμμλ 0λ²μ΄λ€. μ΄λ΄ κ²½μ° 0μ΄ μ μ₯λλ€)
tartgetsλ°°μ΄μμ targetμ λ¬Έμκ° dictμ μλ€λ©΄ sum λ³μμ -1μ μ μ₯νκ³ forλ¬Έμ μ’ λ£νλ€.
targetμ λ¬Έμκ° dictμ μλ€λ©΄, sumμ dict[t]+1μ λνλ€.
resultμ sumμ μΆκ°νλ€.