[백준 2231 파이썬] - 분해합

zsunny·2022년 7월 4일
0

📌 문제

💯 정답

• 방법 1. 틀렸습니다..

n = int(input())

for i in range(1, n+1):
    nums = list(map(int, str(i)))       # 반복시 초기화 되어야 함
    cons = i + sum(nums)                # 분해합 = 생성자 + 각자릿수
    if cons == n:
        print(i)
        break

# 반례: 1, 1의 경우 생성자가 존재하지 않아
# 이 코드의 경우 출력값이 존재하지 않은 상태로 for문을 탈출하고 코드가 종료된다.

• 방법 2. 맞았습니다!!

n = int(input())
result = 0

for i in range(1, n+1):
    nums = list(map(int, str(i)))       # 반복시 초기화 되어야 함
    cons = i + sum(nums)                # 분해합 = 생성자 + 각자릿수
    if cons == n:
        result = i
        break
print(result)

# 1의 경우 생성자가 존재하지 않아 result의 초기값 0이 출력된다.

📝 설명

• 방법 1.의 경우 반례가 존재한다.
  n으로 1을 넣어보면 생성자가 존재하지 않아 출력값이 존재하지 않은 상태로 for문을 탈출하고 코드가 종료된다.
• 방법 2.의 경우 n으로 1을 넣어 생성자가 존재하지 않아도 result의 초기값인 0이 정상적으로 출력된다.
profile
매일 성장하는 예비 웹 개발자 🌱

0개의 댓글