Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Algorithm] 햄버거 만들기 #70

Closed
hwangJi-dev opened this issue Jan 16, 2023 · 0 comments
Closed

[Algorithm] 햄버거 만들기 #70

hwangJi-dev opened this issue Jan 16, 2023 · 0 comments

Comments

@hwangJi-dev
Copy link
Owner

💬 문제

[코딩테스트 연습 - 햄버거 만들기](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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant