본문 바로가기
문제 풀이/백준(BOJ)

[Python] 백준 1431번 : 시리얼 번호

by 희조당 2022. 7. 5.
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)

댓글