본문 바로가기

매일매일 (Everyday)

[BOJ] 브루트 포스 - 분해합 - Python

2231: 분해합

최종답안

### 문제를 똑바로 읽자 생성자가 없을 경우 0 출력
n = int(input())
answer = []

for i in range(n, 0,-1) :
    nums = list(str(i))
    nums = list(map(int, nums)) # 각 자리 수의 숫자 리스트
    result = sum(nums) + i
    if result == n :
        answer.append(i)
    else :
        continue
if answer != [] :
    print(min(answer))
else :
    print(0)

시행착오

  - 런타임 에러 (Value Error), 확인해보니 한자리 숫자인 경우 오류 발생, range 범위 변경

  - 생성자가 존재하지 않을 경우 0을 출력 (문제를 유심히 읽자.)

n = int(input())
answer = []

for i in range(n, 1,-1) :
    nums = list(str(i))
    nums = list(map(int, nums)) # 각 자리 수의 숫자 리스트
    result = sum(nums) + i
    if result == n :
        answer.append(i)
    else :
        continue

print(min(answer))

input인 n의 값을 9로 넣었을때

range(9, 1, -1) 는 9, 8, 7, 6, 5, 4, 3, 2

따라서 range(n, 0, -1) 로 변경

위 예시에서 1까지 출력하도록 설정

### 문제를 똑바로 읽자 생성자가 없을 경우 0 출력
n = int(input())
answer = []

for i in range(n, 0,-1) :
    nums = list(str(i))
    nums = list(map(int, nums)) # 각 자리 수의 숫자 리스트
    result = sum(nums) + i
    if result == n :
        answer.append(i)
    else :
        continue
if answer != [] :
    print(min(answer))
else :
    print(0)

answer에 요소가 들어가지 않은 경우는 생성자가 없는 경우를 말함 따라서 들어있지 않은 경우 0을 출력하도록

``` else : ; print(0) ``` 추가