기술/알고리즘

그리디(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