middlemoon

코드업 6086 문제 본문

Algorithm/Codeup 100

코드업 6086 문제

중대경 2022. 2. 7. 23:53
1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

하지만, 이번에는 그 때 까지의 합을 출력해야 한다.

예를 들어, 57을 입력하면
1+2+3+...+8+9+10=55에서 그 다음 수인 11을 더해 66이 될 때,
그 값 66이 출력되어야 한다.

예시
...
while True :
  s += c
  c += 1
  if s>=n :
    break

print(s)

참고
조건문이나 반복문의 코드블록 안에서 break 가 실행되면,
반복실행을 중단(break)하고, 가장 가까운 반복 블록의 밖으로 빠져나간다.

입력
언제까지 합을 계산할 지, 정수 1개를 입력받는다.
단, 입력되는 자연수는 100,000,000이하이다.

출력
1, 2, 3, 4, 5 ... 순서대로 계속 더해가다가, 그 합이 입력된 정수보다 커지거나 같아지는 경우,
그때까지의 합을 출력한다.

입력 예시   예시 복사

57

출력 예시

66

 

해결과정

 

 

 

각 코드와 같이 이 문제는 예시를 보고 이해하려고 하였다. 입력예시에 57를 입력하게 되면

 

1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데,

즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데, 이 부분이 힌트가 되는데 n을 순서대로 합을 만들게 되면 a의 과정은

1+2+3+4+5.....+10 이런과정을 담아서 55이라는 숫자가 나오게된다. 또한 출력예시가 나와야하는건 57이 55보다 크기때문에 55는 입력값만 받는다고 생각하고 넘기고 출력예시에 66이 나오게된다. 그 이유는 1+2+3+....+10+11 하였을때 값은 66이 나오게 되므로 출력예시에 66이 나오게된다 생각하면 된다.  55(a가 만들어지는 과정) < 57(입력예시) < 66(1+2+3...+11)의 값

'Algorithm > Codeup 100' 카테고리의 다른 글

코드업 개인공부  (0) 2022.02.26
코드업 6098 문제  (0) 2022.02.17
코드업 6083 문제  (0) 2022.02.07
코드업 6079 문제  (0) 2022.02.06
코드업 6045 문제  (0) 2022.01.31
Comments