일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IAM 사용자
- 10807 자바
- 자바
- 티움투어
- 자바 2164
- BFS
- 1010 자바
- 자바 10866
- 백준 28278 자바
- 백준 10866 자바
- 10813 자바
- 코딩테스트
- dfs
- 백준 1764 자바
- 파이썬
- 2346 풍선 터뜨리기
- 2748 자바
- 2798 자바
- 자바 28278
- 10810 자바
- 자바 2346
- 28278 스택 2
- 백준
- 1764 자바
- 자바 1003
- 2164 자바
- 백준 2346 자바
- 데보션영 3기
- 그리디
- IAM Identity Center
- Today
- Total
자두의 데브로그
[파이썬] 백준 11047번 동전 0 본문
https://www.acmicpc.net/problem/11047
11047번: 동전 0
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
www.acmicpc.net
[문제 이해]
입력 받은 동전 종류 중 일부를 적절히 사용해서 입력 받은 결과 값을 만들기 위해 필요한 최소 동전 개수를 구하는 문제이다.
[문제 풀이]
내림차순 정렬을 통해 가지고 있는 동전 중 가장 높은 수부터 만들어야 하는 값과 비교한다. 가지고 있는 동전이 크다면 더 작은 동전과 비교해가며 동전의 개수를 센다. 이때 동전의 개수는 몫 연산자를 사용하여 구할 수 있고, 남은 나머지 금액은 나머지 연산자를 통해 구할 수 있기 때문에 어렵지 않게 문제를 해결할 수 있었다.
# 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
# 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.
import sys
N, K= map(int, sys.stdin.readline().split()) # 동전 종류의 수, 만들 금액
A = list() # 동전 종류
for i in range(N):
A.append(int(sys.stdin.readline()))
A.sort(reverse = True) # 내림차순 정렬
sum = 0 # 동전 개수
for i in A:
if K < i: # 동전이 만들 금액보다 크다면 스킵
continue
else:
sum += (K // i)
K %= i
print(sum)
+ 가끔 문제를 풀 때 시간 초과가 뜨기도 하여 input() 대신 sys.stdin.readline()을 사용하여 입력을 받는데 이 때문에 입력 받는 값의 형태에 따라 split() 함수의 사용 여부가 헷갈리기도 한다. split()은 문자열을 쪼개는 함수라는 것을 기억하자!
split()
split() 함수는 문자열을 쪼개는 함수로, 문자열을 특정 구분자를 기준으로 나누는 함수이다.
https://docs.python.org/ko/3/library/stdtypes.html#str.split
Built-in Types
The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, mappings, classes, instances and exceptions. Some colle...
docs.python.org
str.split(sep=None, maxsplit=-1)
sep을 구분자 문자열로 사용하여 문자열에 있는 단어들의 리스트를 돌려준다. maxsplit 이 주어지면 최대 maxsplit 번의 분할이 수행된다 (리스트는 최대 maxsplit+1 개의 요소).
'코딩테스트 > Python' 카테고리의 다른 글
[파이썬] 백준 10814번 나이순 정렬 (0) | 2024.03.23 |
---|---|
[파이썬] 백준 11870번 좌표 압축 (0) | 2024.03.20 |
[파이썬] 백준 1181번 단어 정렬 (0) | 2024.03.20 |
[파이썬] 프로그래머스 타겟 넘버 (0) | 2024.03.13 |
[파이썬] 프로그래머스 체육복 (0) | 2024.03.08 |