본문 바로가기
코딩 테스트/프로그래머스

옹알이 (2) (in Swift) | 프로그래머스 코딩테스트

by Dev.Andy 2024. 3. 13.

 

머리말

익숙하지만 못 보던 옹알이 문제가 두 번째가 나왔다. 정답률도 생각보다 낮아서 의아했다.

링크

코딩 테스트 연습 - 옹알이 (2)

 

본문

풀이

아이디어

- 문제를 보고 스택을 활용하면 좋을 것 같다는 예상이 들었다.

- 주어진 단어의 맨오른쪽부터 왼쪽으로 차례로 스택 (타입은 문자열) 으로 담아서 매번 해당 스택이 말할 수 있는 단어인지를 판단했다.

(+) 자료구조 스택

스택(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
}

댓글