반응형
백준 BAEKJOON 9047번 6174 [PYTHON/파이썬]
<문제 출처> (BRONZE Ⅰ)
https://www.acmicpc.net/problem/9047
<풀이>
for문과 while문을 함께 사용하여 풀었다.
1. 주어지는 수가 6174이면 바로 종료
2. 그렇지 않다면 단계의 수(cnt)에 1을 더해주고 주어지는 수를 재배열하여 가장 큰 수(내림차순)와 가장 작은 수(오름차순)을 변수 a, b에 저장
3. a에서 b를 뺀 값의 길이가 4자리 수가 아니라면 차이만큼 뒤에 0을 추가
4. 1~3번을 반복
<코드>
import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
N = input().rstrip() # 주어지는 수
cnt = 0
while N != "6174":
cnt += 1 # 단계 추가
a = int("".join(sorted(N, reverse=True))) # 가장 큰 수
b = int("".join(sorted(N))) # 가장 작은 수
N = str(a - b)
if len(N) < 4: # 새로운 수의 길이가 네 자릿수가 아니라면
for _ in range(4 - len(N)):
N += "0" # 0을 추가하여 네 자릿수를 맞춤
print(cnt)
반응형
'ALGORITHM > PYTHON' 카테고리의 다른 글
백준 BAEKJOON 15733번 나는 누구인가 [PYTHON/파이썬] (0) | 2024.02.24 |
---|---|
백준 BAEKJOON 9610번 사분면 [PYTHON/파이썬] (0) | 2024.02.17 |
백준 BAEKJOON 13163번 닉네임에 갓 붙이기 [PYTHON/파이썬] (1) | 2024.02.07 |
백준 BAEKJOON 15969번 행복 [PYTHON/파이썬] (1) | 2024.02.06 |
백준 BAEKJOON 2864번 5와 6의 차이 [PYTHON/파이썬] (0) | 2024.02.05 |