Algorithm/[Python] Code Up_basic100

[ 6079 ] 코드업 6079 : 언제까지 더해야할까?

내일은개발천재🎵 2021. 4. 10. 20:41

< 문제 >

   - 1, 2, 3 ... 을 계속 더해 나갈 때, 그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만 계속 더하는 프로그램을 작성해보자.

< 문제 해석 >

    - 0 ~ 1000 사이 값이 입력된다. 이 값을 x라 하겠다.

    - 1부터 차례대로 더할 때 x와 같거나 커졌을 때, 마지막에 더한 정수가 무엇인지 구하는 문제이다.

    - 즉, 1 + 2 + 3 ... + x >= n(입력 값)이 되는 최소의 x 값을 구하는 문제이다.

 

<코드 1 > for 문 이용.

a = int(input())
n = 0
for i in range(1,a):
  n += i
  if(n >= a ): # 입력값보다 같거나 커지면 loop 종료 및 출력
    print (i)
    break

 => 내가 제출한 코드인데 (정답 처리 되었음.) 입력 값이 0이나 1일 때 어떤 출력도 나오지 않는 오류가 존재한다. (코드 2에서 수정)

 

< 코드 2 > 코드 1 수정

a = int(input())
n = 0
if a<3 : print (a) # 0,1,2가 입력되었을 때 예외처리
for i in range(1,a):
  n += i
  if(n >= a ):
    print (i)
    break

 

< 코드 3 > while 문 사용

result, i = 0, 0
a = int(input())
while(result < a): # 결과가 입력값보다 작다면 반복
  i += 1 #i 는 1부터 (0 입력시 초깃값 0이 출력됨)
  result += i
print (i) #제일 마지막 i가 출력됨.

 

✏️ 코드 해석 ✏️

 문제 자체에서 0 ~ 1000 사이의 값이 입력된다고 하였지만, 실제 테스트케이스에서 0, 1, 2를 검사하는 과정은 없는 것 같다.

   => 코드 1 제출했을 때 정답처리 되었음.

 for 문에서 내가 (1, a) 라고 작성했기 때문에, 0이나 1이 들어갈 때는 for문이 실행되지 않는다.(ㅠㅠ)

 📌 for 문과 while 문이 비슷하지만, 매우 다른 결과를 초래할 수도 있다는 것을 알게 되었다.

      => 문제 및 입력 조건을 잘 파악한 후 for 문와 while 문을 잘 선택하자.

      (또는 for, while의 조건을 잘 짜 보자 ! 연습 또 연습 !! )

 

🔎 궁금한 점 🔎

위 문제의 정답의 수열이 [ 1  2  2  3  3  3  4  4  4  4  5  5  5  5  5  6  6  6  6  6  6  --- ] 으로 이루어져 있다.

 => 1은 1번, 2는 2번, 3은 3번, 4는 4번 ... 이렇게 이루어져있는 수열인데, 위 방법으로 푸는 것이 최선일까?

      더 고민해봐야할 것 같다 !