알고리즘/Java

[python] 백준 더하기 사이클(1110)

유리코딩 2021. 12. 25. 21:34
반응형

알고리즘

python 백준 더하기 사이클(1110)

 

1. 문제

https://www.acmicpc.net/problem/1110

 

 

 

2. 풀이

  • 26(예시)의 2와 6에서 일의 자리인 6과 2와 6의 합의 앞자리, 예시에서는 8(2자리 수인 경우 10의자리, 한자리 숫자는 1의자리 숫자)를 더하는 식을 26이 나올 때 까지 반복하는 문제
  • 10의 자리와 1의 자리를 추출해 더해준 뒤
  • 다시 10의 자리가 될 숫자에 10을 곱해 주고,
  • 1의 자리 숫자가 될 숫자를 10으로 나눈 나머지로 추출해 더해준다
  • 반복문이 돌 때마다 count를 올려주고 결과 값과 시작값이 같아지면 break
n = int(input()) # 26

num = n
cnt = 0

while True:
    num1 = num // 10  # 2
    num2 = num % 10  # 6
    sum_num = num1 + num2  # 2 + 6 = 8
    num = (num2 * 10) + (sum_num % 10)  # 60 + 8 = 68

    cnt += 1

    if num == n:  # num과 n이 같아 질때 break
        break

print(cnt)

 

[비슷하지만 조금 다른 풀이]

  • 첫번째 숫자의 10의자리와 1의 자리를 더해주고
  • 두번째 숫자를 조합할 때 숫자를 string으로 변환해 문자로 더해준뒤 int로 감싸준다.
n = int(input()) # 26

num = n
cnt = 0

while True:
    num1 = num // 10  # 2
    num2 = num % 10  # 6
    sum_num = num1 + num2  # 2 + 6 = 8
    num = int(str(num2) + str(sum_num % 10))  # 숫자(문자6 + 문자8)
                                              # 60 + 8 = 68
    cnt += 1

    if num == n:  # num과 n이 같아 질 때 break
        break

print(cnt)

 

[새로 배운 점]

  • 파이썬이 익숙하지 않아 while문을 작성하는 방법을 찾아보았다.
  • while문의 기본 구조
while <조건문>:
    <수행할 문장1>
    <수행할 문장2>
    <수행할 문장3>
    ...
  • while문 빠져나가기
coffee = 10
money = 300
while money: # money가 0이 아니기 때문에 항상 참
    print("돈을 받았으니 커피를 줍니다.")
    coffee = coffee -1
    print("남은 커피의 양은 %d개입니다." % coffee)
    
    # 커피가 0일 때 break
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
        break

whil문 참고 : https://wikidocs.net/21

 

[느낀점]

어려운 문제는 전혀 아니었지만 머리가 빨리빨리 안돌아간다..... 아직 알고리즘이, 파이썬이 익숙하지 않은 듯 하다.

 

반응형