728x90
https://www.acmicpc.net/problem/1431
문제 풀이
정렬 문제이다.
사실 직접 구현해도 되지만 시리얼 번호의 최대 개수가 50이고,
시간도 2초나 되어서 어떤 정렬법을 써도 상관이 없을 것 같아서 그냥 내장 함수를 이용했다.
람다식을 사용해서 길이, 숫자의 합, 사전식 이 세 가지 순서로 정렬시켰다.
느낀 점
처음에 틀리길래 도대체 뭐지 싶었는데, 한 줄에 하나씩 출력이었따..
이번 주에 한번 정렬, 탐색을 쫙 정리해야겠다.
코드
import sys
n = int(sys.stdin.readline())
arr = [sys.stdin.readline().strip() for i in range(n)]
def getNum(str):
res = 0
for ch in str:
if ch.isdigit(): res += int(ch)
return res
arr = sorted(arr, key= lambda x:(len(x), getNum(x), x))
for a in arr:
print(a)
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[Python] 백준 1715번 : 카드 정렬하기 (0) | 2022.07.05 |
---|---|
[Python] 백준 2512번 : 예산 (0) | 2022.07.05 |
[Python] 백준 1449번 : 수리공 항승 (0) | 2022.07.04 |
[Python] 백준 2559번 : 수열 (0) | 2022.06.24 |
[Python] 백준 11659번 : 구간 합 구하기 4 (0) | 2022.06.24 |
댓글