[백준] 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)
  • 블로그 메뉴

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

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바