File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #2023-04-27-Week3-과제
2+ #1431_시리얼 번호
3+
4+ '''
5+ 문제
6+ 다솜이는 기타를 많이 가지고 있다.
7+ 그리고 각각의 기타는 모두 다른 시리얼 번호를 가지고 있다.
8+ 다솜이는 기타를 빨리 찾아서 빨리 사람들에게 연주해주기 위해서
9+ 기타를 시리얼 번호 순서대로 정렬하고자 한다.
10+
11+ 모든 시리얼 번호는 알파벳 대문자 (A-Z)와 숫자 (0-9)로 이루어져 있다.
12+ 시리얼번호 A가 시리얼번호 B의 앞에 오는 경우는 다음과 같다.
13+
14+ A와 B의 길이가 다르면, 짧은 것이 먼저 온다.
15+
16+ 만약 서로 길이가 같다면,
17+ A의 모든 자리수의 합과 B의 모든 자리수의 합을 비교해서
18+ 작은 합을 가지는 것이 먼저온다. (숫자인 것만 더한다)
19+
20+ 만약 1,2번 둘 조건으로도 비교할 수 없으면,
21+ 사전순으로 비교한다. 숫자가 알파벳보다 사전순으로 작다.
22+ 시리얼이 주어졌을 때, 정렬해서 출력하는 프로그램을 작성하시오.
23+
24+ 입력
25+ 첫째 줄에 기타의 개수 N이 주어진다.
26+ N은 50보다 작거나 같다.
27+ 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다.
28+ 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어져 있다.
29+ 시리얼 번호는 중복되지 않는다.
30+
31+ 출력
32+ 첫째 줄부터 차례대로 N개의 줄에 한줄에 하나씩
33+ 시리얼 번호를 정렬한 결과를 출력한다.
34+ '''
35+
36+ #익명 함수 호출을 위한 lambda / 정렬을 위한 sort 사용 가능
37+
38+ N = int (input ())
39+
40+ a = []
41+
42+ for i in range (N ) :
43+ a .append (input ())
44+
45+ def sum (x ) :
46+ sum = 0
47+ for i in x :
48+ if (x >= '0' ) and (x <= '9' ) :
49+ sum += int (x )
50+ return sum
51+
52+ a = sorted (list , key = lambda x : (len (x ), sum (x ), x ))
53+
54+ for i in a :
55+ print (i )
You can’t perform that action at this time.
0 commit comments