Skip to content

[Algorithm] 햄버거 만들기 #70

Closed
@hwangJi-dev

Description

@hwangJi-dev

💬 문제

[코딩테스트 연습 - 햄버거 만들기](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
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions