햄버거 만들기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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
}
- 스택 초기화: 빈 스택 stack과 패턴 발견 횟수를 세는 변수 yeon을 0으로 초기화
- 재료 순회: 입력된 ingredient 배열의 각 원소에 대해 반복
- 패턴 발견 시 처리: 패턴이 발견되면, 해당 패턴을 스택에서 제거하고 yeon의 값을 1 증가
- 결과 반환: 모든 재료를 순회한 후, 패턴이 발견된 횟수인 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)
'iOS 앱 개발자 프로젝트 > 알고리즘 코드카타' 카테고리의 다른 글
[Algorithm] 배열의 길이에 따라 다른 연산하기 (w/ Swift & Python) (0) | 2024.03.24 |
---|---|
[Algorithm] 배열 두 배 만들기 (w/ Swift & Python) (0) | 2024.03.23 |
[Algorithm] 둘만의 암호 (w/ Swift & Python) (0) | 2024.03.21 |
[Algorithm] 대충 만든 자판 (w/ Swift) (1) | 2024.03.20 |
[Algorithm] 문자열 묶기 (w/ Swift) (0) | 2024.03.20 |