Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- IO bound
- 코딩테스트
- Spring
- URL
- http
- 크기가 작은 부분 문자열
- java
- process
- 십진수 이진수 전환
- Split
- 가장 가까운 단어
- green thread
- 프로그래머스
- CPU
- stack
- 동시성문제
- 2차원 배열 출력
- deque
- DICTIONARY
- frontPattern
- reflection
- annotation
- CPU bound
- TCP/IP
- 문자열
- port
- dns
- Queue
- springMVC
- 문자열 내마음대로 정렬하기
Archives
- Today
- Total
아무나개발하자
할인 행사 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131127
풀이
"""
want
{"바나나" : 3}
{"사과" : 2}
{"쌀" : 2}
{"돼지고기" : 2}
{"냄비" : 1}
1일 : 치킨, 사과, 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀
2일 : 사과, 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비
3일 : 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나
4일 : 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나, 사과
5일 : 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나, 사과, 바나나
0-9까지는 queue에 넣어두고, 10-len(discount)는 리스트에 넣어서 한개씩 추가하기
<문제 해결 방법>
1. want와 number를 통해 user_want라는 dictionary를 만든다.
2. discount를 10개씩 자르는 discount_queue를 생성, 자르고 나머지를 담은 append_list생성
3. answer은 일단 모든 경우의 수가 성공할 수 있다고 가정하고, 안되면 -1 하는 방식으로 유도 (왜냐하면 조건이 만족 안하면 -1하고 break하면됨)
4. 첫번째는 10개로 짤린 discount_queue에서 count를 한다 (조건 만족하지 않으면 -1)
5. 두번째서 부터는 discount_queue를 popleft, append(append_list)를 하면서 discount_queue를 생성해서 첫번째 행위를 반복
"""
from collections import deque
def solution(want, number, discount):
answer = 0
discount_queue = deque()
append_list = []
user_want = {}
for i in range(len(want)):
user_want[want[i]] = number[i]
for i in range(len(discount)):
if (i < 10):
discount_queue.append(discount[i])
else:
append_list.append(discount[i])
"""
다 만족해서 +1 하는것보다 일단 다 만족한다고 가정해서 다 더하고, 하나라도 만족하지 않으면 -1하는게 더 편함
"""
answer = len(append_list) + 1
for key, value in user_want.items():
if (discount_queue.count(key) < value):
answer -= 1
break
for elem in append_list:
discount_queue.popleft()
discount_queue.append(elem)
for key, value in user_want.items():
if (discount_queue.count(key) < value):
answer -= 1
break
return answer
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131127