반응형
알고리즘
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
[느낀점]
어려운 문제는 전혀 아니었지만 머리가 빨리빨리 안돌아간다..... 아직 알고리즘이, 파이썬이 익숙하지 않은 듯 하다.
반응형
'알고리즘 > Java' 카테고리의 다른 글
[python] 달팽이는 올라가고 싶다(2869) (0) | 2021.12.26 |
---|---|
[python] ACM호텔(10250) (0) | 2021.12.25 |
[JAVA] 프로그래머스 제일 작은 수 제거하기 (0) | 2021.11.12 |
[JAVA] 프로그래머스 이상한 문자 만들기 (0) | 2021.11.12 |
[JAVA] 프로그래머스 완주하지 못한 선수 (0) | 2021.11.12 |