For Programmer
백준 2231번 파이썬 문제풀이(브루트 포스- 분해합) 본문
728x90
코드
n = int(input())
result = 1000001 # 결과값을 초기에 1000001 로 설정(최솟값을 구해야하기 때문)
for i in range(1, n + 1): # 문제의 범위 1,000,000까지 돈다.
sumTemp = list(map(int, str(i))) #i가 123 이라면 [1,2,3]으로 리스트에 저장된다.
sumTemp.append(i) # 분해하기 전 수 i값을 대입
sumTemp = sum(sumTemp) #저장되어있는 모든 값들의 합을 대입(생성자구하기)
if sumTemp == n: # 특정한 수(i)로 계산한 생성자값(sumTemp) 값이 입력한 값(n)과 같다면
result = min(result, i) # 특정한 수(i)와 result값을 비교해서 작은 수를 result값에 대입
if result < 1000001: # 생성자가 있어서 result값이 변경이 되었따면
print(result) # 그 값을 출력
else: # 만약 결과값이 초기설정한 값 그대로라면(생성자가 없다는 뜻)
print(0) # 0을 출력
-> 문자열을 분해하여 리스트에 담은 후 그 합을 리스트에 저장만 할 줄 안다면 쉽게 풀 수 있는 문제이다. 자세한 설명은 코드마다 주석을 달아 놓았다.
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 1018번 파이썬 문제풀이(브루트 포스- 체스판 다시 칠하기) (0) | 2021.10.07 |
---|---|
백준 7568번 파이썬 문제풀이(브루트 포스- 덩치) (0) | 2021.10.06 |
백준 2798번 파이썬 문제풀이(브루트 포스- 블랙잭) (0) | 2021.10.06 |
백준 11729번 파이썬 문제풀이(재귀 - 하노이탑 이동 순서) (0) | 2021.10.05 |
백준 2447번 파이썬 문제풀이(재귀 - 별 찍기 - 10) (0) | 2021.10.05 |
Comments