[BOF/Python] 1110번, 더하기 싸이클
📜 문제
🔥난이도🔥

1차 풀이 ⭕
이번 문제는 입력받은 수를 조합하는 과정을 몇 번 반복하면 처음과 같은 수가 나오는지 구하는 문제다.
str 형으로 문자열을 조합하는 방식으로 문제를 풀었다.
N = input() # ex) 26 입력
i = 0 # 사이클 카운트
# 주어진 수가 10보다 작으면 앞에 0 추가
if int(N) < 10:
N = '0' + N
N_new = N # 새로운 수를 저장할 변수
while True:
# 6 + (2 + 6) -> 68 (str 형)
N_new = N_new[1] + str(int(N_new[0]) + int(N_new[1]))[-1]
i += 1 # 사이클 +1
# 새로운 값이 초기 값과 동일하면 중지
if N_new == N:
print(i)
break

2차 풀이(int 형) ⭕
다른 사람들의 정답 코드를 확인했는데 int 형으로 문제를 푸는 방법도 있었다.😮
//, % 연산자를 통해 몫과 나머지 값을 이용한 풀이 방법이다.
int 형으로 문제를 풀 때는 10보다 작을 때의 처리를 별도로 하지 않아도 된다.
N = N_new = int(input()) # ex) 26 입력
i = 0 # 사이클 카운트
while True:
'''
10보다 작으면 N_post가 0이므로
추가 처리를 별도로 안한다.
'''
N_post = N_new // 10 # 2 (10의 자리)
N_end = N_new % 10 # 6 (1의 자리)
# 60 + (2 + 6) -> 68 (int 형)
N_new = (N_end * 10) + ((N_post + N_end) % 10)
i += 1 # 사이클 +1
# 새로운 값이 초기 값과 동일하면 중지
if N_new == N:
print(i)
break

보충 🤓
str 형의 연산 ✖️
str 형에서도 +, * 연산이 가능하다!
+ 연산은 두 문자열을 연결하고, * 연산은 문자열을 곱한만큼 반복 출력한다.
>>> a = 'subs'
>>> b = 'log!'
>>> c = a + b
>>> print(c)
subslog!
>>> d = 'study!'
>>> print(d * 3)
study!study!study!
>>>
list, tuple 형도 동일하게 연산이 가능하다!
현재 티어 🥉
