안녕하세요. 오늘은 프로그래머스 영어 끝말잇기 문제를 풀어보겠습니다.
영어 끝말잇기 문제는 딕셔너리의 활용으로 간단하게 문제를 해결할 수 있습니다.
빈 딕셔너리와 이전 단어를 저장할 수 있는 String을 이용해 봅시다!
for word in words {
count += 1
if dictionary[word] != nil {
isFail = true
break
}
dictionary[word] = true
if lastWord == nil {
lastWord = word
continue
}
if lastWord!.last != word.first {
print(lastWord!.last)
print(word.first)
isFail = true
break
}
lastWord = word
}
dictionary가 비어있지 않으면 중복이고 앞뒤가 다르면 끝말잇기에 실패하므로 해당경우에 break를 걸어줍니다.
위의 두 경우가 아니라면 0, 0을 return 해줍니다.
fail일 경우에는 번호와 차례를 각각 return 해주면 문제가 해결됩니다.
import Foundation
func solution(_ n:Int, _ words:[String]) -> [Int] {
var lastWord:String?
var count = 0
var isFail = false
var dictionary:[String:Bool] = [String:Bool]()
for word in words {
count += 1
if dictionary[word] != nil {
isFail = true
break
}
dictionary[word] = true
if lastWord == nil {
lastWord = word
continue
}
if lastWord!.last != word.first {
print(lastWord!.last)
print(word.first)
isFail = true
break
}
lastWord = word
}
if isFail == false {
return [0,0]
}
else {
return [((count - 1) % n) + 1, ((count - 1) / n) + 1]
}
return []
}
오늘은 여기까지이며, 질문이 있으시면 댓글로 남겨주세요.
좋은 하루 되세요!
'Algorithm Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 위클리 챌린지 전력망을 둘로 나누기 with Swift (0) | 2022.02.12 |
---|---|
[프로그래머스] 위클리 챌린지 교점에 별 만들기 with Swift (0) | 2022.02.10 |
[프로그래머스] 월간 코드 챌린지 시즌1 삼각 달팽이 with Swift (0) | 2022.01.29 |
[프로그래머스] 월간 코드 챌린지 시즌2 2개 이하로 다른 비트 with Swift (0) | 2022.01.28 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 프렌즈4블록 with Swift (0) | 2022.01.27 |