2022-3/1일1코딩

[BOJ] 1049 python

이망고_ 2022. 10. 18. 19:02

예제가 꽤나 많그든요?

 

처음에 예제1만 생각했다가 쉽네..?

 

하였는데 예제에 친절히 이러한 경우, 저러한 경우를 써주어서 이 모든 경우의 수가 맞아야 한다.

 

 

1. tuple 은 첨 써보고요? 

price = tuple(map(int, input().split())

 

이번에 새로웠던 것은 sorted 하려니 map이 들어있어서 안된다고 해서

[] 리스트를 따로 정해주고

input 값을 받는 것을 tuple로 지정해주었더니 map이 sorted 될 수 있었다

 

tuple은 고정시켜주는 값이라 알고 있는데, 이게 sorted할 때 무슨 영향인 걸까.

import sys
input = sys.stdin.readline

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

price_li = []
ans = 0
for _ in range(m):
    price= tuple(map(int, input().split()))
    price_li.append(price)
    
pack_li = sorted(price_li, key=lambda x:x[0])
sin_li = sorted(price_li, key=lambda x:x[1])

if pack_li[0][0] <= sin_li[0][1]*6:
    ans = pack_li[0][0] * (n//6) + sin_li[0][1]*(n%6)
    if pack_li[0][0] < sin_li[0][1] * (n%6):
        ans = pack_li[0][0] * ((n//6)+1)
else:
    ans = sin_li[0][1] * n 
print(ans)

 

2. 

if의 if 문은 생각해서 몫+1 은 했는데 땡 탈락,

알고보니 if 첫번째문 ans에서 그럼에도 불구하고 낱개의 최소값과 n의 나머지를 곱해주어야 하고

그럼에도 불구하고 패키지의 최소값이 낱개의 최소값*n 보다 작을 경우에만~

6//n + 1 해줘야 칸다.

 

3.

나머지는

ans = sin_li[0][1] * n

걍 낱개의 최소값에 n곱해주고 출력하면됨~

 

0. 리스트의 원소와 정수의 곱을 어떻게??

[0] ----->  [0][0]

2차원배열인 걸 계속해서 잊는다.

정렬하고 [0]줄의 [-] 원소를 선택해주어야 한다