Closed
Description
💬 문제
[코딩테스트 연습 - 햄버거 만들기](https://school.programmers.co.kr/learn/courses/30/lessons/133502)
💬 Idea
- 처음에는 문자열로 접근해서 “1231”이 포함되어있다면 해당 1231을 지우고 count를 올려주는 방식을 사용했는데,
123123111231 → 이러한 경우가 생겨 문제에서 나타난 풀이방법과 달라져 버렸다.. - 따라서 Stack을 사용하여 앞 재료부터 햄버거를 쌓을 수 있도록 풀이방법을 바꿔 해결할 수 있었다.
💬 풀이
func solution(ingredient:[Int]) -> Int {
var ingredient = ingredient
var result = 0
var hamburger: [Int] = []
for i in 0..<ingredient.count {
hamburger.append(ingredient[i])
if hamburger.count >= 4 {
let index = hamburger.count - 1
if hamburger[index] == 1 && hamburger[index - 1] == 3 && hamburger[index - 2] == 2 && hamburger[index - 3] == 1 {
result += 1
hamburger.removeLast(4)
}
}
}
return result
}
💬 더 나은 방법?
func solution(ingredient:[Int]) -> Int {
var ingredient = ingredient
var result = 0
var hamburger: [Int] = []
for i in 0..<ingredient.count {
hamburger.append(ingredient[i])
if hamburger.count >= 4 {
if hamburger.suffix(4) == [1, 2, 3, 1] {
result += 1
hamburger.removeLast(4)
}
}
}
return result
}