Engineering Note

41. 연속된 자연수의 합 본문

Problem Solving/Olympiad in Informatics

41. 연속된 자연수의 합

Software Engineer Kim 2021. 2. 28. 17:50

it 취업을 위한 알고리즘 문제풀이

문제

코드1

코드1 함수화 작업

코드2

문제해결방법

  • 문제를 해결하기위한 방법을 작게 세분화한다.
    • 연속된 자연수의 합의 개수는 쉽게 구할수 있다.
      • 이중 for문을 이용해서 N-1부터 내림차순으로 연속된 수의 합을 누적하여 구하고 누적된 값이 N일 경우 cnt를 증가시킨다.
    • 연속된 자연수의 합을 구했을 때 출력방법을 고민한다.
      • 누적 값이 N이 됐을때 이중 for문에서 사용된 j를 이용해서 현재의 j값 부터 j의 초기값 i까지 출력하면서 수식을 출력한다.
  • 수학적으로 해결하기
  • 연속된 2개의 숫자의 합으로 N이 되려면
    • 0 00 // 000 0000 0000 이렇게 15개가 있을 때 2명에게 나머지 12개를 분배해주는 때 똑같이 분배해준다고 생각하면 됨
    • 두명은 각각 1개, 2개를 갖고 있음
    • 나머지 12개를 2명에게 6개씩 똑같이 분배가 가능하다는 것은 2로 나누어 떨어진다는 의미이다.
    • 연속된 숫자가 몇개인지 부터 접근하는 방식의 풀이이다.
    • 예외 처리 조건은
    • 연속된 숫자 5개 1/2/3/4/5 로 이미 15가 완성된다. 이때는 나머지가 0개이고 0개를 각각에게 주면 15가 완성되는데 그다음 연속된 숫자 6개로는 15가 넘어가므로 더이상 연속된 숫자로 주어진 N 15를 만들 수 없다.

'Problem Solving > Olympiad in Informatics' 카테고리의 다른 글

47. 봉우리  (0) 2021.04.04
39. 두 배열 합치기  (0) 2021.03.01
31. 탄화수소 질량  (0) 2021.02.18
29. 3의 개수는?(small)  (0) 2021.02.16
28. N!에서 0의 개수  (0) 2021.02.13
Comments