[정렬] ASCII -> 오름차순 Python

Hwang Won Tae·2021년 12월 14일
0

Algorithm & Coding-Test

목록 보기
1/53
post-thumbnail
post-custom-banner

ASCII 정렬

ipfs 파일을 업로드하는 중에 다음과 같은 정렬이 발생했다.

우리가 아는 오름차순 0, 1, 2, 3, 4 .. 가 아닌 앞자리가 빠른 순서로 정렬이 된다.
0, 1, 10, 11, 12, 13 ...

기존 정렬을 다음과 같은 정렬로 바꿔보자

실습


count_list = []

for i in range(100):
    count_list.append(i) # 0부터 100까지 오름차순 세팅

count_index = 0
for i in count_list:
    size = len(str(i)) # 문자열로 변환
    if size == 1:
        temp = '{:0<2d}'.format(i) # 문자열 길이가 1일 때, 뒤에 0을 한 개 붙임
    else:
        temp = '{:0<3d}'.format(i) # 문자열 길이가 1이 아닐 때, 뒤에 0을 두 개 붙임
    count_list[count_index] = temp
    count_index += 1

count_list.sort() # 정렬
다음과 같은 정렬을 확인할 수 있다.
이제 뒤에 붙은 0을 제거해주자

count_index = 0
for i in count_list:
    size = len(i)
    if size == 2:
        temp = i[:1] # 0번째 문자만 남도록 슬라이싱
    else:
        temp = i[:2] # 0, 1번째 문자만 남도록 슬라이싱
    count_list[count_index] = temp
    count_index += 1

count_list = list(map(int, count_list)) # 리스트 내의 string 타입을 int 타입으로 변경

print(count_list)
다음과 같이 목표한 정렬 결과를 확인할 수 있다.

profile
For me better than yesterday
post-custom-banner

0개의 댓글