공부하자!/알고리즘
프로그래머스 | 영어 끝말잇기 Lv.2 Swift
지우개원정대
2023. 3. 17. 00:39
https://school.programmers.co.kr/learn/courses/30/lessons/12981
문제 풀이
영어로 끝말잇기를 하는데 앞뒤 글자가 정확한지 같은 단어가 나오진 않았는지 확인한 후에
틀린 친구는 누구이고 몇 번째에 틀렸는지를 구해내면 되는 문제다.
먼저 게임이 진행되는 리스트 game을 만들어 놓고 시작
진행되는 동안 우선 뒷글자와 일치하는지 확인(1) -> 아닐 경우 answer에 넣고 break
앞서 이 단어가 나오지 않았는지 확인(2) -> 아닐 경우 answer에 넣고 break
둘 다 괜찮으면 게임이 진행되도록 game에 append
게임이 끝나도 걸리는 부분이 없다면 answer를 [0, 0]으로 만들어 놓고 return 한다.
여기서 주의해야 할 점!!
break을 걸어주지 않을 경우 틀려도 계속해서 게임이 진행될 수 있음..
꼭 걸어 주어야 한다
처음엔 17, 19, 20 케이스에서 틀렸다고 나왔는데
(1)과 (2)의 순서를 바꿔주었더니 해결됐다!
import Foundation
func solution(_ n:Int, _ words:[String]) -> [Int] {
var game: [String] = []
var answer: [Int] = []
for i in 0..<words.count {
if i > 0 {
let now = Array(words[i])
let prev = Array(words[i - 1])
if now[0] != prev[prev.count - 1] {
answer.append((i % n) + 1)
answer.append((i / n) + 1)
break
}
}
if game.contains(words[i]) {
answer.append((i % n) + 1)
answer.append((i / n) + 1)
break
} else {
game.append(words[i])
}
}
if answer.count == 0 {
answer = [0, 0]
}
return answer
}