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
- 구현
- 백준
- 알고리즘_스터디
- 파이썬 3
- dp
- dfs
- 다이나믹프로그래밍
- 알고리즘스터디
- 최단경로
- 백트랙킹
- Level2_PStage
- 부스트캠프_AITech_3기
- 단계별문제풀이
- 프로그래머스
- 이코테
- 다시보기
- 부스트캠프_AITech3기
- ODQA
- U_stage
- 정렬
- 주간회고
- 기술면접
- 이진탐색
- 개인회고
- Level2
- Level1
- 그래프이론
- mrc
- 그리디
- python3
Archives
- Today
- Total
국문과 유목민
[그리디] 만들 수 없는 금액 본문
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다.
문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다.
소요시간: 14분
1. 문제 설명
- 다양한 금액들이 주어지고, 해당 금액들을 조합해서 만들 수 없는 금액 중 최소값을 리턴하는 문제
2. 접근 방식
- 처음에는 for문을 이용해볼까 고민을 하다가 인적성 공부를 하다 배운 조합이 생각이 났다.
- 조합이 경우 itertools라는 모듈 내에 combinations 함수가 있어 이를 활용하기로 했다.
3. 코드
from itertools import combinations
def find_money(x, ls):
dp = [False]*sum(ls)
answer = 0
idx = sum(ls)
for i in range(1, len(ls)):
for j in list(combinations(ls, i)):
dp[idx - sum(j)] = True
for k in range(1, len(dp)+1):
if dp[k] == False:
answer = k
break
print(dp)
return answer
4. 코멘트
- 확실히 모듈이나 함수 등을 알아두면 활용하기 좋은 것 같다. 사용법을 모르더라도 '어 이런 게 있었던 것 같은데...'라는 생각만으로도 문제에 더 수월하게 접근 할 수 있는 것 같다.
- 만약 combinations 함수를 몰랐더라면 level2 이상의 체감 난이도로 문제를 풀었을 것 같다.
'알고리즘_코딩테스트 > 이것이 코딩테스트다' 카테고리의 다른 글
[그리디] 무지의 먹방 라이브 (0) | 2021.12.12 |
---|---|
[그리디] 볼링공 고르기 (0) | 2021.12.12 |
[그리디] 문자열 뒤집기 (0) | 2021.12.12 |
[그리디] 곱하기 혹은 더하기 (0) | 2021.12.12 |
[그리드] 모험가 길드 (0) | 2021.12.12 |
Comments