📜 문제

BOF 1110번, 더하기 싸이클

🔥난이도🔥

image

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

image

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

image

보충 🤓

str 형의 연산 ✖️

str 형에서도 +, * 연산이 가능하다!

+ 연산은 두 문자열을 연결하고, * 연산은 문자열을 곱한만큼 반복 출력한다.

>>> a = 'subs' 
>>> b = 'log!' 
>>> c = a + b
>>> print(c) 
subslog!
>>> d = 'study!' 
>>> print(d * 3) 
study!study!study!
>>>

list, tuple 형도 동일하게 연산이 가능하다!

현재 티어 🥉

image