백준 문제 링크: https://www.acmicpc.net/problem/1431
문제 요약
시리얼번호 정렬한 결과 출력
- 길이 짧은 것부터
- 길이 같으면 자리수 합 작은 것부터 (숫자만 더함)
- 사전순. 숫자가 알파벳보다 사전순으로 작음.
핵심 아이디어
정렬 기준이 여러 개이기 때문에 정렬 기준에 해당하는 애를 순서대로 커버해주면 된다.
정렬 우선순위에 따라 새 리스트에 길이, 자리수 합, 시리얼 번호를 넣어주고, 그것을 정렬하면 된다.
풀이
# silver3-1431. 시리얼 번호
import sys
input = sys.stdin.readline
# 1. 길이 짧은 것부터
# 2. 길이 같으면 자리수 합 작은 것부터 (숫자만 더함)
# 3. 사전순. 숫자가 알파벳보다 사전순으로 작음.
n = int(input())
serial_nums = [list(input().rstrip()) for _ in range(n)]
num_info = []
# 정렬 기준 여러 개 -> 정렬 기준에 해당하는 내용 각각 커버
for serial in serial_nums:
temp_sum = 0 # 각 자리수 합
for alpa_num in serial: # 알파벳 혹은 숫자 한 글자
if alpa_num.isdigit(): # 숫자이면 더함
temp_sum += int(alpa_num)
num_info.append([len(serial), temp_sum, serial]) # 길이, 자리수 합, 시리얼 번호
num_info.sort(key=lambda x:(x[0], x[1], x[2]))
for i in range(n):
print(*num_info[i][2], sep='')
실행 시간
메모리 31256KB, 시간 44ms (python3)
'ALGORITHM > 백준' 카테고리의 다른 글
[BOJ/PYTHON] 11656. 접미사 배열 (정렬) (0) | 2023.05.18 |
---|---|
[BOJ/PYTHON] 11582. 치킨 TOP N (정렬) (0) | 2023.05.18 |
[BOJ/PYTHON] 2423. 전구를 켜라 (최단 경로 - 다익스트라) (0) | 2023.05.18 |
[BOJ/PYTHON] 9694. 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 (최단 경로 - 다익스트라) (0) | 2023.05.16 |
[BOJ/PYTHON] 11779. 최소비용 구하기 2 (최단 경로 - 다익스트라) (0) | 2023.05.16 |
댓글