코드포스 풀이

코드포스 1352A 풀이

ag2개발자 2022. 1. 29. 16:03
t=int(input())
for _ in range(t):
    a=input()
    x=[]
    cnt=0
    y=[]
    if len(a)==1 or len(a)==5:
        print(1)
        print(a)
    else:    
        for i in reversed(range(len(a))):
            if a[i]!="0":
                x.append(a[i])
                cnt+=1
                y.append(cnt)
            else:
                cnt+=1
        print(len(x))
        for j in range(len(x)):
            print(int(x[j])*(10**(y[j]-1)), end=' ')
        print()

정수를 5309이라 하면 총 3개(5000, 300, 9)로 쪼개는 문제이다.

테스트 케이스 t에 따라 정수를 문자열로 우선 인풋 a로 받아준다.

a는 10**4까지 임으로 a의 길이는 1일때와 5일때 쪼개면 총 1개, a 그 자체가 된다.

그렇지 않은 경우에는 a의 길이에 따라 for문을 돌려줬는데, 변수 i가 역순 즉,

내림차순으로 돌아가야 5309의 예시의 경우 5000부터 출력이 되기에

reversed()함수를 이용했다.

a의 i번째 원소(역으로)가 0이 아닐때 배열 x에 append해 주었고 cnt라는 변수를

따로 만들어서 10의 몇승인지 체크하기 위해 배열y에 저장했다.

이후 구현은 간단하니, 나머지는 직접 코드를 보며 이해하기 바란다.

'코드포스 풀이' 카테고리의 다른 글

코드포스 479A 풀이  (0) 2022.01.30
코드포스 122A 풀이  (0) 2022.01.30
코드포스 136A 풀이  (0) 2022.01.29
코드포스 112A 풀이  (0) 2022.01.29
코드포스 58A 풀이  (0) 2022.01.29