여러 풀이가 있을 것 같은데, 완전탐색 답게 풀어보았다.
매 케이스마다 temp라는 배열을 만들 때, temp = price_list 이런식으로 하면 큰일날 수 있다.
배열을 복사할 때는 반드시 temp = original_list[:]을 사용해야함을 유의하자.
# n, b 입력
n, b = map(int, input().split())
# price_list
price_list = list()
# price_list 입력
for _ in range(n):
price_list.append(int(input()))
# 함수들
# simulate(idx)
def simulate(idx):
# temp -> price_list 복사
temp = price_list[:]
# 현재 idx의 가격을 반값으로 바꿔주기
temp[idx] = price_list[idx] / 2
# temp 정렬
temp.sort()
# curr_students
curr_students = 0
# 가장 작은 가격부터 탐색 시작
for i in range(n+1):
# curr_value
curr_value = sum(temp[:i])
# curr_value가 예산 내에 있으면,
if curr_value <= b:
# curr_stuednts 업데이트
curr_students = i
# 반환
return curr_students
# 설계
# max_students
max_students = 0
# 완전 탐색 시작
for i in range(n):
# 현재 인덱스를 반값으로 내려서,
# 몇개까지 살 수 있는지 확인하는 시뮬레이션을 돌려,
# max_students 업데이트
max_students = max(max_students, simulate(i))
# 출력
print(max_students)
'Algorithm(CodeTree, Python) > 완전탐색2' 카테고리의 다른 글
[코드트리 물체 단위로 완전탐색] 상해버린 치즈 Python (0) | 2022.12.20 |
---|---|
[코드트리 물체 단위로 완전탐색] 선분 3개 지우기 python (0) | 2022.12.19 |
[코드트리 물체 단위로 완전탐색] 겹치지 않는 선분 2 python (0) | 2022.12.17 |
[코드트리 물체 단위로 완전탐색] 이상한 폭탄 2 python (0) | 2022.12.17 |
[코드트리 물체 단위로 완전탐색] 개발자의 순위 python (0) | 2022.12.16 |