본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 2][Python] 4564번 : 숫자 카드놀이

by 빛밤하늘 2021. 4. 14.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

4564번: 숫자 카드놀이

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 숫자 카드놀이의 시작값 S로 이루어져 있다. (1 ≤ S ≤ 100000) S는 0으로 시작하지 않으며, 입력의 마지막 줄에는 0이 하나 주어진

www.acmicpc.net

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# 0을 입력할 때까지 계속 테스트 케이스를 반복합니다.
while True:
    # 시작값 S를 입력합니다.
    # 1 <= S <= 100,000
    S = input()

    # 0을 입력하면
    if S == '0':
        # 마지막 입력이므로 반복문을 탈출합니다.
        break

    # 각 테스트 케이스에서 시작값 S도 출력해야합니다.
    # 그리고 밑줄로 내리지 않기 위해 end=' '로 마지막에 한 칸을 띄어주는 처리를 해줍니다.
    print(S, end=' ')

    # 만약 시작값이 숫자 하나라면
    if len(S) == 1:
        # 그 자체로 끝이므로 출력 형식에서 밑줄로 내려줍니다.
        print()
        # 그리고 다음 테스트 케이스로 넘어갑니다.
        continue
    # 만약 시작값이 숫자 2자리 이상이라면
    else:
        # 한 자리 숫자가 될 때까지 카드놀이를 반복합니다.
        while True:
            # 각 자리 숫자를 모두 곱한 결과를 출력하는 변수를 선언합니다.
            result = 1

            # 시작값 S에서 각 자리 숫자마다 반복합니다.
            for i in S:
                # 각 자리 숫자를 모두 result 변수에 곱합니다.
                result *= int(i)

            # 각 자리 숫자를 모두 곱한 결과를 출력하고 출력 형식에 맞게 한 칸을 띄어줍니다.
            print(result, end=' ')

            # 이번에 나왔던 결과를 시작값 S 변수에 덮어쓰기합니다.
            S = str(result)

            # 각 자리 숫자를 모두 곱한 결과의 길이가 숫자 한 개라면
            if len(S) == 1:
                # 반복문을 탈출합니다.
                break

    # 한 줄마다 각각의 테스트 케이스의 결과를 출력하므로 한 줄 내려주는 처리를 합니다.
    print()

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글