공부하자!/알고리즘

프로그래머스 | 영어 끝말잇기 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
}