-
[Python] CodeUp : 기초100제 6,079 언제까지 더해야 할까?코딩테스트/CodeUp 2024. 4. 17. 17:43
https://codeup.kr/problem.php?id=6079
문제는 위 링크를 참고하세요;.
[문제 풀기 전 생각한 부분]
1. 입력을받고
2. 계속 더하다가
3. 더한 값이랑 입력값이 같으면 출력하네
[my_code]
n = int(input()) # 사용자로 부터 입력을 받고 정수형으로 변환 sum = 0 # sum 초기화 ''' 근데 사실 n+1이라고 했지만 이때까지 n이여도 상관 없지 않나 싶었다. 하지만 n =1이라면? or 2라면은 생각못했다. 하지만 그렇게 엄청 중요한 사실은 아니다. ''' for i in range(1,n+1): # 1부터 n까지 반복한다. sum += i # sum = sum + i ex) sum == 0 이니깐 0 = 0 + 1 이런식으로 n까지 if n == sum: # 만약 n(사용자가 입력한 값)과 sum이 같다면 print(i) # 그 때 해당하는 i를 출력해라.
[문제점]1. 일단 문제에서 n == sum 이 아닌 같거나 크면이다.
2. 처음에 10을 넣었을 때, 값이 잘 나와서 제출했는 데 틀려서 당황했고, 여러가지 숫자를 입력해보자 값이 나오지 않았다.
3. 그러면 바꿔서 해보자 n == sum 이 부분을 sum >= n 으로 바꿔보자
[문제점]
1부터 10까지 차례로 더하다가 10과 같거나 커지는 순간은 맨 처음에 보이는 4일 것이다. (1+2+3+4 >= 10)
하지만 '크거나' 가 붙어있기에 해당 범위 내에서 계속 출력되는 것이다.
(1부터 n까지 여기선 1부터 10까지 겠죠?)따라서 멈춰줘야된다.
[문제점 해결]
n = int(input()) total = 0 for i in range(1, n + 1): # 범위를 1부터 n까지로 수정 total += i if total >= n: print(i) break # 합이 n보다 크거나 같은 경우인 순간에 반복문 종료
추가로 다른 사람의 풀이도 한번 찾아보았다.
n = int(input()) # 사용자로부터 정수를 입력받아 n에 할당합니다. s = 0 # 합을 저장할 변수 s를 0으로 초기화합니다. t = 0 # 숫자의 개수를 저장할 변수 t를 0으로 초기화합니다. # 현재까지의 합이 입력된 정수 n보다 작은 동안 반복합니다. while s < n: t += 1 # 현재까지의 숫자의 개수를 1 증가시킵니다. s += t # 현재까지의 합에 t를 더합니다. # 반복문을 빠져나오고 나면, 마지막으로 더한 숫자의 개수 t를 출력합니다. print(t)
'코딩테스트 > CodeUp' 카테고리의 다른 글
[Python] 기초 100제 : 바둑판에 흰 돌 놓기 (0) 2024.04.22 [Python] CodeUp : 기초 100제 6,094 : 이상한 출석 번호 부르기3 (0) 2024.04.22 [Python] CodeUp : 기초 100제 6,092 이상한 출석 번호 부르기1 (0) 2024.04.19 [Python] CodeUp 기초 100제 6,082 3 6 9 게임의 왕이 되자 (0) 2024.04.18 [Python] CodeUp : 기초 100제 6,081 16진수 구구단 출력하기(py) (0) 2024.04.17