내 풀이
Num = int(input())
Num_y = []
for i in range(Num):
if Num % i == 0:
Num_y.append(i)
if sum(Num_y) == Num:
print(Num, "= 1")
for i in range(1, len(Num_y)):
print("+", Num_y[i])
else:
print(Num, "is NOT perfect.")
정석 풀이
while True:
Num = int(input())
total = 0
Num_y = []
if Num == -1: #ZeroDivisionError: integer division or modulo by zero 오류 방지
break
for i in range(1, Num//2+1): #자신 제외하면 n의 절반까지가 모든 약수를 구하므로!
if Num % i == 0:
Num_y.append(i)
total += i
if total == Num:
cor = " + ".join(str(i)for i in Num_y) # + 를 사이사이에 넣으면서 Num_y의 모든 요소들을 문자열로 바꿔서 합침
print(Num, "=", cor)
else:
print(Num, "is NOT perfect.")
- append([i])가 아니라 append(i)
- sum 쓰지 않고 새롭게 변수 설정
- -1일 때 멈추게 설정
- 프린트시 join 사용
- 효율적인 코드를 위해 Num의 반만 돌리기
'백준' 카테고리의 다른 글
백준 10818번: 최소, 최대💦 (0) | 2023.07.18 |
---|---|
백준 8958번: OX퀴즈💦 (0) | 2023.07.18 |
백준 2480번: 주사위 세개💦 (0) | 2023.07.14 |
백준 2525번: 오븐시계💦 (0) | 2023.07.14 |
백준 2884번: 알람 시계 (0) | 2023.07.14 |