알고리즘

[문제] 그리디 알고리즘 (큰 수의 법칙) - 20210527

grep.jj 2021. 5. 27. 11:53
  • 시작시간 : 10시 48분
  • 종료시간 : 11시 50분
  • 문제 : 
    '큰 수의 법칙'은 일반적으로 통계 분야에서 다루어지는 내용이지만 동빈이는 본인만의 방식으로 다르게 사용하고 있다.동빈이의 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 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 + 6 + 6 + 5 + 6 + 6 + 6 + 5  =  46
    참고자료 : 이것이 취업을 위한 코딩 테스트다 with 파이썬 - 나동빈 지음, 한빛미디어 옮김
  • 풀이 :
    자바
    결과
  • 회고 : 

완성을 하고 나서야 M % K != 0 일 경우에만을 고려한 걸 알았다.

시작하기 전부터 다양한 예외 경우를 고려하는 습관이 필요한 것 같다.