목차
머리말
익숙하지만 못 보던 옹알이 문제가 두 번째가 나왔다. 정답률도 생각보다 낮아서 의아했다.
링크
본문
풀이
아이디어
- 문제를 보고 스택을 활용하면 좋을 것 같다는 예상이 들었다.
- 주어진 단어의 맨오른쪽부터 왼쪽으로 차례로 스택 (타입은 문자열) 으로 담아서 매번 해당 스택이 말할 수 있는 단어인지를 판단했다.
(+) 자료구조 스택
스택(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
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (Swift) 공원 산책 (0) | 2023.06.12 |
---|---|
[프로그래머스] (2018 카카오) 프렌즈4블록 (0) | 2023.06.07 |
[프로그래머스] (Swift) 정수를 나선형으로 배치하기 (0) | 2023.06.05 |
[프로그래머스] (Swift) [카카오 1차] 다트 게임 (0) | 2023.06.02 |
[프로그래머스] 두 수의 합 (2) | 2023.05.30 |
댓글