BOJ - 2697

주의·2024년 1월 16일
0

boj

목록 보기
83/214

백준 문제 링크
다음 수 구하기

❓접근법

  1. A를 뒤에서부터 살펴보면서, 현재 자릿수가 이전 자릿수보다 큰 지점을 찾는다.
    이 문제에서는 (2,4), (4,7), (7,9), (9,9), (9,3) 여기서 break한다.
    이 때 i = 6, num[i] = 3
  2. 만약 이런 부분이 한 곳도 없다면 'BIGGEST'를 출력하고 continue.
  3. 이번에는 A를 뒤에서부터 살펴보면서, num[i] == 6 보다 크다면 여기서 break한다.
    이 때 j = 10, num[j] = 4
  4. 그 다음 num[i]와 num[j]의 위치를 바꿔주고,
    num[i+1]의 뒤쪽을 오름차순 정렬하여 바꿔준다.
  5. num을 출력하면 끝!

👌🏻코드

T = int(input())
for _ in range(T):
    
    num =list(map(int, input()))

    n = len(num)

    for i in range(n-2, -1, -1):
        if num[i] < num[i+1]:
            break

    else:
        print('BIGGEST')
        continue


    for j in range(n-1, i, -1):
        print(num[j], num[i])
        if num[j] > num[i]:
            break

    num[i], num[j] = num[j], num[i]

    num[i+1: ] = sorted(num[i+1:])

    print(''.join(map(str, num)))

0개의 댓글