백준 9047 - 6174

Computer Science/Problem Solving

문제 번호도 4자리 숫자이고 문제 제목도 4자리 숫자이니 뭔가 헷갈린다.
 

문제설명

제한사항 및 입출력

제한시간은 1초로 약 1억번의 연산 안에 정답을 도출하면 된다. 테스트 케이스의 개수가 20개까지 주어지고 각 테스트케이스마다 500만번의 연산을 넘기지 않으면 된다.

풀이

시간 복잡도가 굉장히 널널하기 때문에 각 4자리 숫자를 분리 후 최대, 최소로 재조립하여 빼주는걸 6174가 나올 때 까지 반복하는 방향으로 생각하였다.

 

내 코드

def find_minmax(num):
    min_num_list = ['0', '0', '0', '0']
    max_num_list = ['0', '0', '0', '0']
    for i in range(4):
        try:
            min_num_list[i] = str(num)[i]
            max_num_list[i] = str(num)[i]
        except:
            continue
        
    min_num_list.sort()
    max_num_list.sort(reverse= True)
    for i in range(4):
        min_num_list[i] = min_num_list[i]
        max_num_list[i] = max_num_list[i]
    min_num = int(''.join(min_num_list))
    max_num = int(''.join(max_num_list))
    
    return max_num - min_num

t = int(input())
for _ in range(t):
    num = int(input())
    
    cnt = 0
    while num != 6174:
        num = find_minmax(num)
        cnt += 1
    
    print(cnt)

 

 

고찰

처음엔 입력으로 무조건 4자리 숫자가 들어오는 것으로 생각하여 함수 내 인덱스 처리를 안일하게 했다가 틀렸다...

except로 4자리 숫자가 아닌 경우엔 건너뛰어주도록하여 해결했다.

 

* %00d 라는 자리수 포맷팅 기능을 다른 사람의 풀이에서 확인할 수 있었다!

적용해서 개선한 코드

t = int(input())
for _ in range(t):
    num = int(input())
    cnt = 0
    
    while num != 6174:        
        s = "%04d" % num
        num = int("".join(sorted(s, reverse=True))) - int("".join(sorted(s)))
        
        cnt += 1
        
    print(cnt)

 

 

'Computer Science > Problem Solving' 카테고리의 다른 글

백준 23326 - 홍익 투어리스트  (0) 2025.08.19
백준 13265 - 색칠하기  (0) 2025.08.18
백준 15973 - 두 박스  (0) 2025.08.18
백준 19622 - 회의실 배정 3  (0) 2025.08.17
프로그래머스 - 피로도  (0) 2025.08.17
'Computer Science/Problem Solving' 카테고리의 다른 글
  • 백준 13265 - 색칠하기
  • 백준 15973 - 두 박스
  • 백준 19622 - 회의실 배정 3
  • 프로그래머스 - 피로도
hojoo
hojoo
그냥 개발이 즐거운 사람
  • hojoo
    dev_record
    hojoo
  • 전체
    오늘
    어제
    • 분류 전체보기 (82)
      • Study (0)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 (0)
        • Real MySQL 8.0 (0)
        • 친절한 SQL 튜닝 (0)
        • 도메인 주도 개발 시작하기 (0)
        • 대규모 시스템 설계 기초 (0)
      • Computer Science (66)
        • Problem Solving (30)
        • Data Structure (4)
        • Spring Boot (13)
        • DB (1)
        • Java (4)
        • OS (3)
        • Server (2)
        • Tech (0)
      • Security (16)
        • Reversing (15)
        • Assembly (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    서버 증설 횟수
    Header
    DB
    12033
    백준
    리버싱 핵심원리
    9421
    DP
    servlet
    dreamhack.io
    HTTP
    bean
    소수상근수
    n+1
    x64dbg
    21278
    리버싱
    n^2 배열 자르기
    PE header
    2539
    15973
    13265
    프로그래머스
    레나 튜토리얼
    Reversing
    Spring boot
    자료구조
    16946
    19622
    Lena tutorial
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
hojoo
백준 9047 - 6174
상단으로

티스토리툴바