코딩 테스트/프로그래머스
옹알이 (2) (in Swift) | 프로그래머스 코딩테스트
Dev.Andy
2024. 3. 13. 23:51
목차
머리말
익숙하지만 못 보던 옹알이 문제가 두 번째가 나왔다. 정답률도 생각보다 낮아서 의아했다.
링크
본문
풀이
아이디어
- 문제를 보고 스택을 활용하면 좋을 것 같다는 예상이 들었다.
- 주어진 단어의 맨오른쪽부터 왼쪽으로 차례로 스택 (타입은 문자열) 으로 담아서 매번 해당 스택이 말할 수 있는 단어인지를 판단했다.
(+) 자료구조 스택
스택(Stack)에 관한 블로그는 이곳에 있다. 궁금하다면 여기를 참고하자.
코드
import Foundation
struct Nephew {
let words = ["aya", "ye", "woo", "ma"]
func isWordSpeakble(_ word: String) -> Int {
var word = word.map { String($0) }
var stack = ""
var temp = ""
let wordIndex = word.count - 1
let minStackCount = 2
for i in 0...wordIndex {
let j = wordIndex - i
stack = word[j] + stack
guard stack.count >= minStackCount else { continue }
guard temp != stack else { break }
for word in words {
if word == stack {
temp = word
stack = ""
}
}
}
return stack == "" ? 1 : 0
}
}
func solution(_ babbling: [String]) -> Int {
let nephew = Nephew()
var result = 0
for word in babbling {
result += nephew.isWordSpeakble(word)
}
return result
}