[백준] 2231번 : 분해합

letsbebrave·2022년 2월 26일
0

codingtest

목록 보기
30/146

문제

개념

  1. 1 ≤ N ≤ 1,000,000 이면 브루트포스로 풀 수 있다
  2. 숫자별 자릿수의 합 구하기

문제에 주어진 조건을 보면

첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
라는 것이 있다.

보통 100,000,000까지 범위가 주어질 때는 브루트포스로 풀 수 있다.
그래서 for문으로 1부터 입력값 이하까지 돌려서 각각의 숫자별 자릿수의 합이 해당 숫자와 일치하는지 비교해보았다.

숫자별 자릿수의 합을 구할 때엔 아래와 같은 코드를 가지고 풀었다.
(프로그래머스의 문제와 동일)
해당 숫자를 문자열로 형변환하고 해당 문자열의 길이(len)만큼 for문을 돌려서 각 [ ] 인덱스의 수를 int로 형변환하여 list에 담아주었다.

자릿수 구하기 문제

https://programmers.co.kr/learn/courses/30/lessons/12931

def solution(n):
    answer = 0
    strNum = str(n)
    numlist = []
    
    for i in range(len(strNum)):
        numlist.append(int(strNum[i]))
    answer = sum(numlist)

    return answer

정답풀이

import sys

M = int(sys.stdin.readline())
answer = 0

for i in range(1, M+1):
    num = str(i)
    numlist = []
    for j in range(len(num)):
        numlist.append(int(num[j]))
    if i + sum(numlist) == M :
        answer = i
        break

print(answer)
profile
그게, 할 수 있다고 믿어야 해

0개의 댓글