[백준] 1110번 - 더하기 사이클 (파이썬)

2022. 6. 1. 23:20·🎲 알고리즘 공부/백준

📝 문제

> 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다.  먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다.

 

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

 

입출력 예시

다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.

 

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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

🎨 풀이

💡 성공 코드

n = int(input())
tmp = 0 # 계속 바뀔 예정인 변수
count = 0
n_list = list(str(n))

if len(n_list) == 1 :
    n_list.insert(0,0)
    
while (True):
    plus = str(int(n_list[0]) + int(n_list[1]))
    if len(plus) == 2 :
        plus = plus[-1]
    tmp = str(n_list[1]) + plus
    count += 1
    n_list = list(str(tmp))
    if int(tmp) == n:
        break

print(count)

> 핵심 : 문제에서 알려준 사이클을 있는 그대로 구현해내면 된다.

 

1. 변수 만들기

 - tmp 는 이름처럼 임시 저장 느낌이고, 변수의 값이 계속 바뀐다. (위의 예시에서는 26, 68, 84, ...가 순서대로 담긴다) 

 - count 는 바뀐 횟수다. (이 문제에서 구하고자 하는 "사이클의 길이"다)

 

2. n값을 한자리씩 분해해서 n_list에 넣는다. ex) n_list = ['2','4']

3. 만약 n_list의 길이가 1이라면 한자리 숫자가 입력되었다는 뜻이므로, 앞자리에 0을 넣어준다. (문제에 나와있다)

 

4. 무한 반복문을 설정한다.

5. 먼저, n_list의 각 자리의 숫자를 더한 후 문자열 형태로 바꾼 후 plus 변수에 넣는다.

6. 만약 plus의 자릿수가 2자리라면 끝 자리만 plus에 넣어준다. (가장 오른쪽 자리 수만 붙여주기로 했기 때문)

7. tmp에는 원래 있던 n_list의 뒷자리 수와 plus에 들어있는 한 자리 수를 합쳐서 넣는다.

8. count = count + 1을 해준다. (더하기 사이클을 한번 돌았기 때문임)

9. 다시 tmp에 있는 값을 n_list에 쪼개서 넣어준다.

10. 만약 tmp에 있는 값과 n 값이 같다면 무한 반복문을 탈출한다.

    아니라면 4번으로 이동해서 4~10 과정을 반복한다. 

 

11. count를 출력해주면 끝난다.

 

n=0을 넣었을 때 이 코드의 변수들에 어떻게 저장이 되는지 알려주기 위해 작성함

 

​끝~

 

⭐ 느낀점

 

> 코드가 쫌 복잡해보이기는 하는데~ 예전에 비해 발전한 게 느껴져서 아주 좋다. 예전에는 이거 못 풀고 넘겼었는데 ㅎㅎ~~~~ 힘을 더 내보자 파이팅이다~

'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 2562번 - 최댓값 (파이썬)  (0) 2022.06.03
[백준] 10818번 - 최소, 최대 (파이썬)  (0) 2022.06.02
[백준] 10951번 - A + B - 4 (파이썬)  (0) 2022.05.31
[백준] 10952번 - A + B - 5 (파이썬)  (0) 2022.05.30
[백준] 10871번 - X보다 작은 수 (파이썬)  (0) 2022.05.29
'🎲 알고리즘 공부/백준' 카테고리의 다른 글
  • [백준] 2562번 - 최댓값 (파이썬)
  • [백준] 10818번 - 최소, 최대 (파이썬)
  • [백준] 10951번 - A + B - 4 (파이썬)
  • [백준] 10952번 - A + B - 5 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    오블완
    폰켓몬
    피보나치수
    정보처리기사
    코테
    찬양추천
    til
    nodejs
    BOJ
    50문답
    백준
    스프링 부트
    6월 목표
    파이썬
    컨텐더스
    정처기
    코민이
    행렬덧셈
    오버워치
    일기
    codeup
    연습문제
    프로그래머스
    카카오
    티스토리챌린지
    스프링부트
    신입일기
    충무로
    코린이
    코드업
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[백준] 1110번 - 더하기 사이클 (파이썬)
상단으로

티스토리툴바