-
[programmers/Swift] 햄버거 만들기Archive/Questions 2022. 11. 15. 20:04728x90
programmers.co.kr - 코딩테스트연습 - Lv.1 - 연습문제 - 햄버거 만들기
Constraints :
- 1 ≤ ingredient의 길이 ≤ 1,000,000
- ingredient의 원소는 1, 2, 3 중 하나의 값이며, 순서대로 빵, 야채, 고기를 의미합니다.
// // Created by Yongwoo Marco on 2022/11/15. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ ingredient:[Int]) -> Int { var result = 0, stack = [Int]() for i in ingredient { stack.append(i) if stack.count > 3, stack[stack.count - 1] == 1, stack[stack.count - 2] == 3, stack[stack.count - 3] == 2, stack[stack.count - 4] == 1 { stack = stack.count - 4 == 0 ? [] : Array(stack[0..<stack.count - 4]) result += 1 } } return result } print(solution([2, 1, 1, 2, 3, 1, 2, 3, 1])) // 2 print(solution([1, 3, 2, 1, 2, 1, 3, 1, 2])) // 0
How I tried this :
String으로 변환해서 "1231" 제거하는 형태로 해보았지만 시간초과가 많이 나왔다.재료가 쌓이지 않고 손이 빨라서?! 1231 재료가 올바른 순서면 다음 재료가 대기한다는 문제자체에서 힌트를 얻어
쌓이는 재료를 스택으로 재료가 새로 들어올 때마다 마지막 4가지 재료를 확인해서 햄버거를 만드는 형태로
문제를 푸니 시간초과 없이 해결되었다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 과일 장수 (0) 2022.11.14 [programmers/Swift] 푸드 파이트 대회 (0) 2022.11.13 [programmers/Swift] 삼총사 (0) 2022.11.12 [programmers/Swift] 콜라 문제 (0) 2022.11.05 [programmers/Swift] 단어 변환 (0) 2022.08.12