개인공부/알고리즘

알고리즘 문제 풀이(코딩테스트 문제 2)

lsc99 2023. 10. 28. 17:08

문제 2.

 

문제2 설명

 

정리

  • 자를 숫자를 입력받기
  • 몇번을 반복할지 세는 cnt 선언
  • 1. a의 십의자리숫자와 a의 일의자리숫자를 더한 b 생성
  • 2. a의 일의자리숫자를 십의자리숫자로, b의 일의자리숫자를 일의자리로 만든 c 생성
  • 3. a를 다시 결과값 c로 선언
  • 4. 반복수 cnt에 1을 더한다.
  • a와 처음 입력받은 Num이 같아질때까지 1~4번의 과정을 반복
  • 같아지면, 반복수 cnt출력

 

코드

# playdata coding test 2
Num = int(input()) # 자를 숫자 입력받기
cnt = 0 # 몇번 반복할지 셀 cnt 선언
a = Num

while True:
    b = a//10 + a%10 # a의 십의자리숫자 + a의 일의자리숫자
    c = str(a%10) + str(b%10) # a의 일의자리숫자를 십의자리숫자로, b의 일의자리숫자를 일의자리로 만든다.
    a = int(c) # a를 결과값 c로 선언
    cnt += 1 # 반복수 + 1
    if a == Num: # a가 처음 입력받은 Num과 같아지면
        print(cnt) # 반복수 출력
        break

 

정해코드

# playdata coding test 2 정해코드
test = int(input())
for _ in range(test):
    num = int(input())

    new = num
    cnt = 0
    while True:
            if num < 10:
                    n = 0
                    m = num
            else:
                    n = num//10
                    m = num - (num//10) * 10
            temp = n+m
            if temp < 10:
                    a = 0
                    b = temp
            else:
                    a = temp // 10
                    b = temp - (temp // 10) * 10
            num = 10 * m + 1 * b
            cnt += 1
            if num == new:
                    print(cnt)
                    break

 

느낀점: 문제의 설명에서의 입력과 출력을 보고 처음에는 어떤 식으로 풀어야 할지 당혹스러웠지만, 풀이에 대한 설명을 듣고 나니 이해가 되었다. 정해코드와 첫번째 코드가 다른점은 처음에 몇번 반복할지를 정해코드는 입력받고 첫번째의 코드는 자를 숫자만 입력받고 반복수만 출력하게 된다.