1from collections import deque 2 3def solution(want, number, discount): 4 want_dict = dict() 5 answer = 0 6 7 for i in range(len(want)): 8 want_dict[want[i]] = number[i] 9 10 for i in discount[:10]: 11 if i in want_dict: 12 want_dict[i] -= 1 13 14 for i in range(0, len(discount)-9): 15 if all(map(lambda x: x <= 0, want_dict.values())): 16 answer += 1 17 18 if discount[i] in want_dict: 19 want_dict[discount[i]] += 1 20 if i+10 < len(discount) and discount[i+10] in want_dict: 21 want_dict[discount[i+10]] -= 1 22 23 return answer ๋ฌธ์ œ XYZ๋งˆํŠธ์—์„œ๋Š” ํšŒ์›์— ๊ฐ€์ž…ํ•˜๋ฉด 10์ผ๋™์•ˆ ํ• ์ธํ˜œํƒ์„ ๋ฐ›๋Š”๋‹ค ํ• ์ธํ•˜๋Š” ์ œํ’ˆ์€ ํ•˜๋ฃจ์— ํ•˜๋‚˜์”ฉ๋งŒ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ๋‹ค ์ •ํ˜„์ด๊ฐ€ ์›ํ•˜๋Š” ์ œํ’ˆ ๋ฆฌ์ŠคํŠธ, ์›ํ•˜๋Š” ์ œํ’ˆ์˜ ์ˆ˜๋Ÿ‰ ๋ฆฌ์ŠคํŠธ, ๋งˆํŠธ์—์„œ ํ• ์ธํ•˜๋Š” ์ œํ’ˆ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค ์ •ํ˜„์ด๊ฐ€ ์›ํ•˜๋Š” ์ œํ’ˆ์„ ๋ชจ๋‘ ํ• ์ธ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํšŒ์› ๋“ฑ๋ก ๋‚ ์งœ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ผ TC input want: [“banana”, “apple”, “rice”, “pork”, “pot”]
1def solution(order): 2 answer = 0 3 length = len(order) 4 stackA = [i for i in range(length, 0, -1)] 5 stackB = [] 6 7 for i in order: 8 while True: 9 if stackA and stackA[-1] == i: 10 stackA.pop() 11 break 12 if stackB and stackB[-1] == i: 13 stackB.pop() 14 break 15 16 if stackB and stackB[-1] > i: 17 return answer 18 19 stackB.append(stackA.pop()) 20 answer += 1 21 22 return answer ๋ฌธ์ œ ์›ํ•˜๋Š” ์ƒ์ž ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋ฐฐ์—ด order๊ฐ€ ์ฃผ์–ด์ง„๋‹ค ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ์— [N… 3, 2, 1]์™€ ๊ฐ™์ด ๋ฐ•์Šค๊ฐ€ ๋†“์—ฌ์žˆ๋‹ค ๋ฐ•์Šค๋Š” 1๋ฒˆ ์ƒ์ž๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๋บ„ ์ˆ˜ ์žˆ๋‹ค ๋บ€ ์ƒ์ž๋ฅผ ์ž ๊น ๋ณด์กฐ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ์— ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋‹ค ๋ณด์กฐ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ๋Š” ์Šคํƒ๊ณผ ๊ฐ™์ด FILO๊ฐ€ ์ ์šฉ๋œ๋‹ค ์ˆœ์„œ๋Œ€๋กœ ์ƒ์ž๋ฅผ ์‹ฃ์ง€ ๋ชปํ•˜๋ฉด, ๊ทธ๋งŒ๋‘”๋‹ค ๋ฐ•์Šค๋ฅผ order์— ๋งž๊ฒŒ ๋ช‡ ๊ฐœ๊นŒ์ง€ ์‹ค์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋ผ TC input [4, 3, 1, 2, 5]