본문 바로가기

iOS 앱 개발자 프로젝트/알고리즘 코드카타

[Algorithm] 햄버거 만들기 (w/ Swift & Python)

햄버거 만들기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

햄버거는 빵-야채-고기-빵 [1,2,3,1] 의 순서대로 쌓아야 한다.

재료들을 쌓으면서, 햄버거의 순서인 [1,2,3,1]이 나오면 포장할 수 있는 개수를 늘린다.

 

마지막 요소 4개가 [1,2,3,1]이라면, Pop을 시켜 Stack에서 없애주고,

마지막 요소가 4개가 아니면 햄버거를 포장할 수 없다. 

 

 

language = swift

 

stack과 continue 구문을 사용한다. stack의 길이가 4 미만일 경우 (stack에 저장된 요소의 수가 4개 미만일 경) 아래의 코드를 실행하지 않고 다음 반복(iteration)으로 넘기는데, 패턴을 찾을 때마다 yeon을 1씩 증가시켜 포장 횟수를 계산한다. 

func solution(_ ingredient:[Int]) -> Int {
    
    var stack: [Int] = []
    var yeon = 0
    
    for i in ingredient {
        
        stack.append(i)
        
        if stack.count < 4 { continue }
        
        let n = stack.count
        if Array(stack[n-4..<n]) == [1, 2, 3, 1] {
            stack = Array(stack[0..<n-4])
            yeon += 1
        }
        
    }
    return yeon
}

 

  1. 스택 초기화: 빈 스택 stack과 패턴 발견 횟수를 세는 변수 yeon을 0으로 초기화
  2. 재료 순회: 입력된 ingredient 배열의 각 원소에 대해 반복
  3. 패턴 발견 시 처리: 패턴이 발견되면, 해당 패턴을 스택에서 제거하고 yeon의 값을 1 증가
  4. 결과 반환: 모든 재료를 순회한 후, 패턴이 발견된 횟수인 yeon의 최종 값을 반환

 

 

 

language = python

 

def solution(ingredient):
    stack = []
    yeon = 0
    for i in ingredient:
        stack.append(i)
        if stack[-4:] == [1,2,3,1]:
            yeon += 1
            for _ in range(4):
                stack.pop()
            
    return yeon

 

 


 

 

 

여기서 잠깐, continue 구문 복습하기 

 

 

 

while 반복문에서 continue 사용하기

i = 0
while i < 100:       # i가 100보다 작을 때 반복. 0부터 99까지 증가하면서 100번 반복
    i += 1           # i를 1씩 증가시킴
    if i % 2 == 0:   # i를 2로 나누었을 때 나머지가 0이면 짝수
        continue     # 아래 코드를 실행하지 않고 건너뜀
    print(i)

 

 

for 반복문에서 continue 사용하기

for i in range(100):  # 0부터 99까지 증가하면서 100번 반복
    if i % 2 == 0:    # i를 2로 나누었을 때 나머지가 0이면 짝수
        continue      # 아래 코드를 실행하지 않고 건너뜀
    print(i)