티스토리 뷰

 

이번 포스팅은 백준 알고리즘 사이트의 1110번 더하기 사이클 문제를 Python 언어로 코딩해보도록 하겠습니다. 아래 url로 접속하시면 문제를 볼 수 있습니다.

 

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

 

이번 포스팅은 지난 포스팅과 같은 단계로 if문 사용해보기 단계 마지막 문제입니다.

 

 

이 문제의 경우 100보다 작은 수 하나를 입력 받아 각 자리 수를 더해 1의 자리 수를 새로운 수의 1의 자리에, 원래 수의 1의 자리를 10의 자리로 만들어 계속해서 더해가다 입력 받은 수와 같은 수가 나올 때까지의 횟수를 구하는 문제입니다.

 

 

이를 좀 더 쉽게 그림으로 표현한 것입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
tmp = inp = int(input())
count = 0
while True:
    ten = tmp//10
    one = tmp%10
    res = ten + one
    count += 1
    tmp = int(str(tmp%10)+str(res%10))
 
    if (inp==tmp):
        break
print(count)

 

우선 사이클을 구할 수를 입력 받기 위한 변수 inp를 입력받음과 동시에 사이클을 계산하기 위한 변수 tmp에 값을 전달해주고, 사이클 횟수를 구할 count 변수를 0으로 초기화 해줍니다.

 

while True를 이용해 무한 반복시키고, ten에 tmp//10을 통해 입력 받은 수의 10의 자리 수를 저장해주고, one에 tmp%10을 통해 입력 받은 수의 1의 자리를 저장해줍니다. ten과 one에 저장된 수를 res를 통해 더해주고, count를 통해 사이클을 1회 증가시켜줍니다.

 

이후 새로운 수의 조합을 만들기 위해 tmp%10의 값, 즉 원래 수의 일의 자리를 문자열로 변환한 값과 새로운 값 res의 일의 자리를 문자열로 변환한 값을 더해 int형으로 변환하여 tmp에 저장합니다.

 

python의 경우 문자열끼리 더할 수 있기에 문자열을 합하고, 그를 int형으로 변환할 수 있습니다. 이를 통해 c언어보다는 쉽고 빠른 방법으로 수를 조합할 수 있습니다.

 

if문을 사용해 tmp의 값과 원래 입력 받은 input 값이 같으면 break를 통해 무한 반복을 멈춰주고, 그때까지의 count값 즉 사이클 횟수를 출력해주시면 됩니다.

 

 

다음 포스팅에서는 다음 단계의 문제를 풀어보도록 하겠습니다.

 

다음 포스팅에서 봐요 :))

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함