기술/알고리즘
그리디(2):큰 수의 법칙
코린이형준
2021. 5. 22. 17:40
728x90
배열의 크기 N, 숫자가 더해지는 횟수 M, 똑같은 수가 더해지는 최대의 수 K라 할때 입력받은 N중에서 가장M번을 더하여 가장 큰 숫자가 나올수 있는 경우의 수를 구하라.(각자연수는 공백으로 구분한다.)
n,p,k=map(int, input().split())
number = list(map(int, input().split()))
number.sort()
number.reverse()
first=number[0]
second=number[1]
result=0
while True:
for i in range(k):
if m==0:
break
result += first
m-=1
if m==0:
break
result+=second
m-=0
print(result)
여기서 중요한 함수는 자료형을 입력받는 map함수와 입력받은 수를 정렬하는 sort함수이다.
map(자료형, 입력받는 방식)으로 입력하면 여러 변수를 내가 설정한 자료형과 방식으로 변경하여 입력받을 수 있고 sort함수를 통해 무작위로 입력받은 값들은 오름차순으로 정렬할수 있다. 그 이후부터는 while반복문을 통해 무한반복으로 설정한 조건에 따라 break문으로 반복문을 종료시킴으로써 원하는 값을 얻을수 있다.
728x90