본문 바로가기
Algorithm/CodeUp

[CodeUp 기초 100제]1025 : [기초-입출력] 정수 1개 입력받아 나누어 출력하기(풀이 성공)

by 전봇대파괴자 2020. 10. 27.

 


입력:

다섯 자리로 이루어진 1개의 정수를 입력받는다.
(단, 10,000 <= 입력받는 수 <= 99,999 )

 

 

출력:

각 자리의 숫자를 분리해 한 줄에 하나씩 [ ]속에 넣어 출력한다.


내 코드:

x = input()
x = str(x)
for i in range(len(z)):
    b = [int(x[i])*10**(len(x)-1-i)]
    print(b)

 

Comment: 여기서 가장 중점적인 문제는, 어떻게 자릿수에 맞는 10제곱수를 곱하느냐입니다. 여기서는 입력한 숫자의 자릿수와 제곱수를 이용하면 비교적 간단하게 풀이하였습니다. 하지만 이해가 가지 않는 분도 있을 수 있으므로, 위의 []안에 들어간 코드를 한 번 더 풀어 써보겠습니다.

 

예를 들어, x라는 변수로 11111이라는 수가 입력되었다고 합시다. 그렇다면 

 

x=11111

len(x)=5

 

가 됩니다. 그렇게 되면, 출력 결과는 다음과 같아야 합니다.

 

[10000]

[1000]

[100]

[10]

[1]

 

이것을 조금 다르게 써 보겠습니다. 

 

10000 = 10⁴

1000 = 10³

100 = 10²

10 = 10¹

1

 

보다시피 10000은 10의 4제곱이며, 이는 자릿수 5에서 1을 뺀 값입니다. 1000 역시 10의 3제곱이며, 이는 자릿수 4에서 1을 뺀 값입니다. 이에 기초해 코드를 풀어보겠습니다. 우선, x 각 자리의 숫자들을 따로 분리해야 합니다. int 자료형에서 string 자료형으로 바꾸면, 인덱싱으로 분리가 가능합니다. 

 

x=str(x) # 문자열로 자료형 변경
for i in range(len(x)): # 자릿수만큼 for문 반복
    num=int(x[i])
    print(num) # 각 자릿수 숫자 하나씩만 출력

 

이제 각 자릿수에 맞는 10제곱수를 곱해줍니다.

 

x=str(x) # 문자열로 자료형 변경
for i in range(len(x)): # 자릿수만큼 for문 반복
    p=len(x)-1 # 10제곱수=자릿수-1
    b=[int(x[i])*10**(p-i)]
    print(b)