[프로그래머스 LV2] 영어 끝말잇기

Junyoung Park·2022년 8월 13일
0

코딩테스트

목록 보기
554/631
post-thumbnail

1. 문제 설명

영어 끝말잇기

2. 문제 분석

문자열 집합을 통해 나왔던 단어인지 확인하고, 지난 단어의 마지막 캐릭터를 이번 단어의 첫 번째 캐릭터와 일치하는지 체크하며 끝말잇기 여부를 확인하자. 딕셔너리를 통해 특정 인물의 몇 번째 차례인지 확인할 수 있는데, 배열로 해도 충분할 것 같다.

3. 나의 풀이

import Foundation

func solution(_ n:Int, _ words:[String]) -> [Int] {
    var wordSet = Set<String>()
    var wordDict = [Int:Int]()
    var lastCharacter = words[0].first
    for idx in 0..<words.count {
        let word = words[idx]
        let peopleOrder = idx % n + 1
        let peopleCount = wordDict[peopleOrder] ?? 0
        
        if lastCharacter == word.first {
            lastCharacter = word.last
        } else {
            return [peopleOrder, peopleCount + 1]
        }
        
        if !wordSet.contains(word) {
            wordSet.insert(word)
        } else {
            return [peopleOrder, peopleCount + 1]
        }
        
        wordDict[peopleOrder] = peopleCount + 1
    }
    return [0, 0]
}
profile
JUST DO IT

0개의 댓글