[μ€μννΈ μκ³ λ¦¬μ¦] νλ‘κ·Έλλ¨Έμ€: μμ΄ λλ§μκΈ°
μ λͺ©
λ¬Έμ μ€λͺ
1λΆν° nκΉμ§ λ²νΈκ° λΆμ΄μλ nλͺ μ μ¬λμ΄ μμ΄ λλ§μκΈ°λ₯Ό νκ³ μμ΅λλ€. μμ΄ λλ§μκΈ°λ λ€μκ³Ό κ°μ κ·μΉμΌλ‘ μ§νλ©λλ€.
- 1λ²λΆν° λ²νΈ μμλλ‘ ν μ¬λμ© μ°¨λ‘λλ‘ λ¨μ΄λ₯Ό λ§ν©λλ€.
- λ§μ§λ§ μ¬λμ΄ λ¨μ΄λ₯Ό λ§ν λ€μμλ λ€μ 1λ²λΆν° μμν©λλ€.
- μμ¬λμ΄ λ§ν λ¨μ΄μ λ§μ§λ§ λ¬Έμλ‘ μμνλ λ¨μ΄λ₯Ό λ§ν΄μΌ ν©λλ€.
- μ΄μ μ λ±μ₯νλ λ¨μ΄λ μ¬μ©ν μ μμ΅λλ€.
- ν κΈμμΈ λ¨μ΄λ μΈμ λμ§ μμ΅λλ€.
λ€μμ 3λͺ μ΄ λλ§μκΈ°λ₯Ό νλ μν©μ λνλ λλ€.
tank → kick → know → wheel → land → dream → mother → robot → tank
μ λλ§μκΈ°λ λ€μκ³Ό κ°μ΄ μ§νλ©λλ€.
- 1λ² μ¬λμ΄ μμ μ 첫 λ²μ§Έ μ°¨λ‘μ tankλ₯Ό λ§ν©λλ€.
- 2λ² μ¬λμ΄ μμ μ 첫 λ²μ§Έ μ°¨λ‘μ kickμ λ§ν©λλ€.
- 3λ² μ¬λμ΄ μμ μ 첫 λ²μ§Έ μ°¨λ‘μ knowλ₯Ό λ§ν©λλ€.
- 1λ² μ¬λμ΄ μμ μ λ λ²μ§Έ μ°¨λ‘μ wheelμ λ§ν©λλ€.
- (κ³μ μ§ν)
λλ§μκΈ°λ₯Ό κ³μ μ§νν΄ λκ°λ€ 보면, 3λ² μ¬λμ΄ μμ μ μΈ λ²μ§Έ μ°¨λ‘μ λ§ν tank λΌλ λ¨μ΄λ μ΄μ μ λ±μ₯νλ λ¨μ΄μ΄λ―λ‘ νλ½νκ² λ©λλ€.
μ¬λμ μ nκ³Ό μ¬λλ€μ΄ μμλλ‘ λ§ν λ¨μ΄ words κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, κ°μ₯ λ¨Όμ νλ½νλ μ¬λμ λ²νΈμ κ·Έ μ¬λμ΄ μμ μ λͺ λ²μ§Έ μ°¨λ‘μ νλ½νλμ§λ₯Ό ꡬν΄μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
νμ΄
μ€λ³΅λλ λ¨μ΄μ μ 무λ Setμ ν΅ν΄μ, λ§μ§λ§ λ λ¬Έμμ νμ¬ μ λ¬Έμκ° κ°μμ§ λΉκ΅ν΄μ λλ§μκΈ°κ° μ μμ μΌλ‘ μ§νλκ³ μλμ§ νμΈν μ μμ΅λλ€. λ§μ½ μλͺ»λ λ¨μ΄κ° λ°κ²¬λλ©΄ νμ¬ λ¨μ΄μ μΈλ±μ€λ₯Ό ν΅ν΄ λꡬ(index % n + 1)μ λͺλ²μ§Έ(index / n + 1) λ¨μ΄μΈμ§λ₯Ό κ³μ°νμ¬ λ°νν©λλ€. λ§μ§λ§ λ¨μ΄κΉμ§ λ€ νμΈνμ λλ λλ§μκΈ°κ° μ μμ μΌλ‘ μ§νλμλ€λ©΄ [0, 0]μ λ°νν©λλ€.
μ½λ
import Foundation
func solution(_ n:Int, _ words:[String]) -> [Int] {
var wordSet = Set<String>()
for (index, word) in words.enumerated() {
if !wordSet.isEmpty && (wordSet.contains(word) || words[index-1].last != word.first){
return [(index % n) + 1, index / n + 1]
}
wordSet.insert(word)
}
return [0, 0]
}