본문 바로가기
BOJ

[python] 백준 5911 - 선물

by yujinkimkim 2023. 2. 12.

5911번: 선물 (acmicpc.net)

 

5911번: 선물

1, 2, 4번 친구의 선물을 구매하고, 3번 친구의 선물을 쿠폰을 써서 구매하면 된다. (4+2)+(2+0)+(4+1)+(6+3) = 22 이기 때문에, B원으로 모두 구매하고 배송보낼 수 있다. 또, 1번이나 4번 친구에게 쿠폰을

www.acmicpc.net

깨달은 게 많은 문제네용,,

시간초과 나고 틀렸습니다 나고 해서

고칠 때마다 아..! 아..! 함


import sys
input = sys.stdin.readline

n, money = map(int,input().split())

p = []
m = []
for i in range(n):
    a, b = map(int, input().split())
    p.append(a)
    m.append(b)

ans = []
for i in range(n):
    data = []
    sum = money
    for j in range(n):
        if i == j :
            data.append(p[j] // 2 + m[j])
        else:
            data.append(p[j]+m[j])

    data.sort()

    cnt = 0
    for j in data:
        sum -= j
        if sum < 0:
            break
        cnt += 1
    ans.append(cnt)    

print(max(ans))

우선 for i in p 이런 식으로 해서 꺼내오게 하려했는데

그렇게 하면 m에서는 m.index(i) 이런 식으로 해야해서 시간초과 나구

 

저기 sum < 0 있는 if 문에서 break 하기 전에 저기서 ans.append(cnt)해줬었는데

글케 하면 생각해보니까 append 못 해주는 경우도 생기더라구요

고때메인가 오류 났았슴니당

 

힝ㅇ풀고나니까 당연한것만 골라서 틀린 것 같아서 속상하긴 한데

고래도 잘 해결했으니까 만족하겠슴미당~~

한 문제만 더 하면 광고 가능요 크크

3.3 떼가지는거 여기서 메꾸겠습니당 ㅋ크

 

[그시절] 투니버스 리즈시절 만화주제가 노래모음 | 𝗣𝗟𝗔𝗬𝗟𝗜𝗦𝗧 | 2000년대 애니 OST 모음 - YouTube

 

댓글