반응형
문제
여기서 큰 수의 법칙이란 다양한 수로 이뤄진 배열이 있을 때 주어진 수들을 M번 더해 가장 큰 수를 만드는 법칙
단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과할 수는 없음
입력 조건
첫째 줄에 N(2<=N<=1000), M(1<=M<=10000), K(1<=K<=10000)의 자연수가 주어지며 각 자연수는 공백으로 구분
둘째줄에 N개의 자연수가 주어짐. 각 자연수는 공백으로 구분. 단, 각각의 자연수는 1이상 10000이하의 수로 주어짐
입력으로 주어지는 K는 항상 M보다 작거나 같다.
출력 조건
첫째 줄에 큰 수의 법칙에 따라 더해진 답을 출력
입력 예시
5 8 3
2 4 5 4 6
출력 예시
46
※이때 큰 수인 6을 k번 더하고 다음 수 5를 한번 더하면 다시 6을 k번 더할 수 있다
풀이:
1. sort함수를 사용하여 입력받은 배열을 내림차순 정렬
2.몇번째 더하는지 확인할 정수형 변수를 두개를 만들어 if문을 통해 적절히 break문과 continue로 이어간다
SORT 함수 (정렬)
- .sort() 를 사용하면 오름차순 자동 정렬
- .sort(reverse=True) 를 사용하면 내림차순 정렬
map함수 입력받기
arr = list(map(int, input().split())) //배열arr에 공백을 기준으로 입력받기
-
a, b, c = map(int, input().split()) //변수 a,b,c에 각각 공백을 기준으로 정수 입력받기
n,m,k= map(int,input().split())
arr=list(map(int,input().split()))
arr.sort(reverse=True)
print(arr)
sum=0
rcount=0 //전체 몇번 반복중인지 확인하는 rcount
scount=0 //하나의 정수가 몇번 반복중인지 확인하는 scount
while(rcount!=m):
if (scount == k):
sum+=arr[1]
rcount+=1
scount=0
continue
rcount+=1
sum+=arr[0]
scount+=1
print(sum)
반응형
'백준(알고리즘)' 카테고리의 다른 글
백준 1267 핸드폰 요금 (0) | 2021.01.22 |
---|---|
백준 1094 막대기 (0) | 2021.01.22 |
백준 1613 역사 (0) | 2021.01.17 |
백준 14889 스타트와 링크 (비트마스크) (0) | 2021.01.17 |
백준 11723 집합 (0) | 2021.01.16 |