개념
현재 상황에서 지금 당장 좋은 것만 고르는 방법
예제1 (p.92)
큰 수의 법칙
#1 m이 10000이하인 경우
n, m, k = map(int, input().split())
data = list(map(int, input().split()))
start = time.time()
data.sort()
max1 = data[len(data) - 1]
max2 = data[len(data) - 2]
for i in range(0, m):
if (i != 0)&(i % k == 0):
result += max2
else:
result += max1
print(result)
#2 m이 10000이하여도 가능한 방법
n, m, k = map(int, input().split())
data = list(map(int, input().split()))
start = time.time()
data.sort()
max1 = data[len(data) - 1]
max2 = data[len(data) - 2]
group = max1 * k + max2
result = group * (m // k) + max1 * (m % k - (k - 1))
print(result)
예제2 (p.96)
숫자 카드 게임
#작성
import time
n, m = map(int, input().split())
arr = []
for i in range(0, n):
arr.append(list(map(int, input().split())))
start = time.time()
min_list = []
for i in range(0, n):
min_list.append(min(arr[i]))
max_value = max(min_list)
idx = min_list.index(max_value)
print(min(arr[idx]))
print(f"time : {time.time()-start}s")
#min비교
import time
n, m = map(int, input().split())
result = 0
for i in range(0, n):
data = list(map(int, input().split()))
result = max(result, min(data))
print(f"time : {time.time()-start}s")
예제3 (p.99)
1이 될때까지
import time
n, k = map(int, input().split())
start = time.time()
cnt = 0
while(n != 1):
if n % k == 0:
n = n / k
else:
n -= 1
cnt += 1
print(cnt)
print(f"time : {time.time()-start}s")
'Python' 카테고리의 다른 글
[Python] 알고리즘의 종류, 종류별 예제 _ 정렬 (4/7) (0) | 2024.09.05 |
---|---|
[Python] 알고리즘의 종류, 종류별 예제 _ DFS/BFS (3/7) (0) | 2024.09.04 |
[Python] 알고리즘의 종류, 종류별 예제 _ 구현 (2/7) (0) | 2024.09.03 |
[Python] 파이썬으로 모니터 외부입력 전환하기 (2) | 2024.09.02 |
[Python] Itertools 총정리, 예문 (2) | 2024.08.28 |