ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 백준 1110 더하기 사이클
    Python_알고리즘 2021. 6. 26. 22:26
    문제 바로가기

       문제분석   

    # 각 자리의 숫자의 십의자리, 일의자리를 따로 떼서 새로운 수를 만들고 그 수를 다시 새로운 수로 반환하여 처음 입력된 숫자와 동일해지기까지의 횟수를 구하는 문제이다.

    # 문제의 핵심은 조건이 참인 동안에 무한 루프를 돌리고 if문으로 탈출조건을 만들어 주는 것이다.

     

     

       문제풀이   

     

     

    # 숫자로 계산
    n = int(input())    #들어온 수를 모두 숫자로 변환
    
    num = n     #나중에 계산한 값을 다시 새로운 수로 받아야 하니까 변수로 저장
    count = 0   #사이클 수 세는 변수 저장
    while True:     #조건이 참인 동안에 계속 반복
        a = num // 10   #들어온 수의 십의자리
        b = num % 10    #들어온 수의 일의자리
        c = (a + b) % 10    #새로운 수를 만들기 위해 각 자리 더해서 나온 값의 일의자리
        num = b * 10 + c    #새로운 수는 기존 일의자리를 십의자리로, 각 자리 더해서 나온 값의 일의자리를 더함
        count += 1      #이 과정이 반복될때마다 사이클 수 1씩 증가
        if (num == n):  #그렇게 조합된 새로운 수와 기존의 수가 같아지면 사이클 프린트하고 멈춤.
            print(count)
            break
    
    • 들어온 수를 모두 숫자로 변환하고
    • 나중에 계산한 값을 다시 새로운 수로 받아야 하니까 변수로 저장한다.
    • 사이클 횟수를 세는 변수까지 선언하고 무한루프를 돌린다.
    • 들어온 수의 십의자리, 일의자리를 각각 구하고
    • 새로운 수를 만들기 위해 각 자리 더해서 나온 값의 일의자리를 구한다.
    • 새로운 수는 기존 일의자리를 십의자리로, 각 자리 더해서 나온 값의 일의자리를 더하고
    • 이 과정이 반복될때마다 사이클 횟수를 1씩 증가시킨다.
    • 그렇게 조합된 새로운 수와 기존의 수가 같아지면 사이클을 프린트 하고 탈출!

     

     

    'Python_알고리즘' 카테고리의 다른 글

    [Python] 백준 4673 셀프 넘버  (0) 2021.06.29
    [Python] 백준 4344 평균은 넘겠지  (0) 2021.06.29
    [Python] 백준 2884 알람시계  (0) 2021.06.25
    [Python] 백준 2588 곱셈  (0) 2021.06.24
    [Python] 백준 10869 사칙연산  (0) 2021.06.23

    댓글

Designed by Tistory.