728x90
프로그래머스 영어 끝말잇기
주어진 인원 수와 배열을 통해 끝말잇기의 결과를 반환하는 문제
현재 턴을 계속 계산하면서, 스택과 Set을 통해 이번 턴의 통과 여부를 결정하도록 구현
func solution(_ n:Int, _ words:[String]) -> [Int] {
var turn = [0, 0]
var words = words
var stack = [Character]()
var duplication = Set<String>()
while !words.isEmpty {
let word = words.removeFirst()
turn[0] = turn[0].quotientAndRemainder(dividingBy: n).remainder + 1
turn[1] += turn[0] == 1 ? 1 : 0
if stack.last == word.first || stack.isEmpty, duplication.insert(word).inserted {
stack.append(word.last!)
}
else {
return turn
}
}
return [0, 0]
}
// i
// 0 1 2 3 4 5 6 7 8
// turn 0
// 1 2 3 1 2 3 1 2 3
// turn 1
// 1 1 1 2 2 2 3 3 3
// n words result
// 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3]
// 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0]
// 2 ["hello", "one", "even", "never", "now", "world", "draw"] [1,3]
728x90
'Algorithm' 카테고리의 다른 글
SwiftUI: 연속 부분 수열 합의 개수 (0) | 2024.03.18 |
---|---|
SwiftUI: 귤 고르기 (0) | 2024.03.18 |
SwiftUI: 영어 끝말잇기 (0) | 2024.03.18 |
SwiftUI: 카펫 (0) | 2024.03.17 |
SwiftUI: 짝지어 제거하기 (0) | 2024.03.16 |