-
백준 2437번 : 저울 - 파이썬 (python)알고리즘/그리디 2021. 4. 3. 18:21
2437번: 저울
하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓
www.acmicpc.net
- 유사 문제
ssssol.tistory.com/50?category=956078
그리디 알고리즘 : 곱하기 혹은 더하기 - 파이썬 (python)
- 입력 조건 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다. (1<=S의 길이<=20) - 출력 조건 첫째 줄에 만들어질 수 있는 가장 큰 수를 출력합니다. 테스트케이스 1) 02984 -> 576 테
ssssol.tistory.com
* 방법
아이디어: target의 초기값을 1으로 설정하고 target 값을 증가시켜가며 측정할 수 있는 무게인지 확인한다.
(1) data 값을 입력받고 오름차순으로 정렬한다.
(2) target 값이 확인하는 저울 추의 값보다 크거나 같다면 target 값에 x를 더하고,
작다면 반복문을 종료하고 값 (→ 만들 수 없는 최소값) 을 출력한다.
- 테스트케이스
7
3 1 6 2 7 30 1
(1) data = [1, 1, 2, 3, 6, 7, 30]
(2) target = 1
① target (=1) >= x (=1) 이므로 target = target + x = 1 + 1 = 2
② target (=2) >= x (=1) 이므로 target = target + x = 2 + 1 = 3
③ target (=3) >= x (=2) 이므로 target = target + x = 3 + 2 = 5
④ target (=5) >= x (=3) 이므로 target = target + x = 5 + 3 = 8
⑤ target (=8) >= x (=6) 이므로 target = target + x = 8 + 6 = 14
⑥ target (=14) >= x (=7) 이므로 target = target + x = 14 + 7 = 21
⑦ target (=21) < x (=30) 이므로 break, target = 21 출력
n = int(input()) # 저울 추의 개수 data = list(map(int, input().split())) # 추의 무게 data.sort() target = 1 for x in data: if target < x: break target += x print(target)
'알고리즘 > 그리디' 카테고리의 다른 글
백준 2217번 : 로프 - 파이썬 (python) (0) 2021.04.02 백준 11047번 : 동전 0 - 파이썬 (python) (0) 2021.04.01 백준 2839번 : 설탕 배달 - 파이썬 (python) (0) 2021.03.30 백준 4889번 : 안정적인 문자열 - 파이썬 (python) (0) 2021.03.25 백준 16953번 : A → B - 파이썬 (python) (0) 2021.03.25