728x90
https://www.acmicpc.net/problem/1431
1431번: 시리얼 번호
첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어
www.acmicpc.net
문제 풀이
정렬 문제이다.
사실 직접 구현해도 되지만 시리얼 번호의 최대 개수가 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 |
댓글