728x90
반응형
https://www.acmicpc.net/problem/12788
문제의 접근 방법
- 대회에 참가한 사람의 수를 어떻게 구할지 생각해보기
- 최소 인원의 회원들에게 펜을 빌리기 위해서는 가장 펜을 많이 가지고 있는 회원을 우선시!
내가 막혔던 부분
펜의 개수가 부족할 때 "STRESS" 를 출력하는 방법
-> break문을 걸어주지 않아서 반복 출력되게 함.
문제 풀이 방법
CTP의 회원 수 n명 입력 받기 -> 참가 팀의 수(m), 팀을 구성하는데 필요한 팀원의 수(k) 입력 받기 -> CTP 회원들이 가지고 있는 펜의 수 a를 입력 받아 리스트에 저장하기 -> 최댓값 우선으로 계산하기 위해 내림차순 정렬하기 -> n번 반복문을 돌려 참가자 수(m*k)가 리스트 a의 모든 원소들의 합(CTP의 회원들이 가지고 있는 펜의 총 개수)이 작다면 "STRESS" 출력 -> result변수를 선언해 리스트 a의 i번째 원소들을 더해나가는데 만약 참가자 수(m*k)가 누적되어서 더해진 result 값보다 크면 계속 다음 원소를 더해나가고, 만약 작다면 현재 인덱스 번호에 1을 더해서 출력!!! <- 0번째 인덱스부터 시작했기 때문에 1을 더하기
소스코드
n = int(input())
m,k = map(int, input().split())
a = list(map(int, input().split()))
a = sorted(a, reverse=True)
result = 0
for i in range(n):
if m*k > sum(a):
print("STRESS")
break
result += a[i]
if m*k > result:
continue
else:
print(i+1)
break
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 귀찮음 : 16208번 - Python (0) | 2021.07.29 |
---|---|
[백준] 줄 세우기 : 11536번 - Python (0) | 2021.07.29 |
[백준] 아우으 우아으이야!! : 15922번 - Python (0) | 2021.07.28 |
[백준] 수열과 쿼리 3 : 13544번 - Python (0) | 2021.07.28 |
[백준] Project Teams : 20044번 - Python (0) | 2021.07.28 |