파이썬/코딩 테스트

[Do-it! 코딩 테스트-기초편] 017. 내림차순으로 자릿수 정렬하기

caramel-bottle 2023. 11. 3.

문제

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

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net


접근

데이터 크기: 10자리 문자열

시간 제한: 2초

 

데이터의 크기가 작기 때문에 선택정렬 사용


코드

N = list(input())
temp = 0
for j in range(len(N)):
    max_val = -1
    min_index = 0
    for i in range(j, len(N)):
        if int(N[i]) > max_val:
            max_val = int(N[i])
            max_index = i
    temp = int(N[j])
    N[j] = max_val
    N[max_index] = temp

for i in N:
    print(i, end='')

설명

문자열 입력을 바로 list로 변환

 

최소값을 찾기 위해 이중 for문을 사용했다.

0번 인덱스에 들어갈 최소값을 찾기 위해 (0 ~ 맨 끝)을 돌며 최소값을 찾고 0번 인덱스에 삽입

1번 인덱스에 들어갈 최소값을 찾기 위해 (1 ~ 맨 끝)을 돌며 최소값을 찾고 1번 인덱스에 삽입

...

K번 인덱스에 들어갈 최소값을 찾기 위해 (K ~ 맨 끝)을 돌며 최소값을 찾고 K번 인덱스에 삽입

 

해당 인덱스 앞은 이미 정렬이 완료되었기 때문에 인덱스 뒤만 보면 된다.

 

댓글