https://www.acmicpc.net/problem/1431
solution
# 1431, 시리얼 번호
import sys
# 길이가 같은 배열 자리수의 합으로 정렬
def serial_sort1(arr):
sorted_arr = {}
return_arr = []
for number in arr:
sum = 0
for ch in number:
if ch.isdigit():
sum += int(ch)
if sorted_arr.get(sum) is None:
sorted_arr[sum] = [number]
else:
sorted_arr[sum].append(number)
sorted_arr = sorted(sorted_arr.items(), key=lambda x: x[0])
for i in sorted_arr:
return_arr.extend(i[1])
return return_arr
N = int(sys.stdin.readline())
serial = {}
for _ in range(N):
num = sys.stdin.readline().strip()
if serial.get(len(num)) is None:
serial[len(num)] = [num]
else:
serial[len(num)].append(num)
for i in range(len(list(serial.values()))):
if len(list(serial.values())[i]) != 1:
num = serial_sort1(list(serial.values())[i])
serial[list(serial.keys())[i]] = num
serial = sorted(serial.items(), key=lambda x: x[0])
ans = []
for i in serial:
for j in i[1]:
print(j)
반례 :
3
A0A
0AA
AAA
# 1431, 시리얼 번호
import sys
# 길이가 같은 배열 자리수의 합으로 정렬
def serial_sort1(arr):
sorted_arr = {}
return_arr = []
for number in arr:
sum = 0
for ch in number:
if ch.isdigit(): # 숫자면 더함
sum += int(ch)
if sorted_arr.get(sum) is None:
sorted_arr[sum] = [number]
else:
sorted_arr[sum].append(number)
sorted_arr = sorted(sorted_arr.items(), key=lambda x: x[0])
for i in sorted_arr:
i[1].sort() # 조건 3
return_arr.extend(i[1])
return return_arr
N = int(sys.stdin.readline())
serial = {}
for _ in range(N):
num = sys.stdin.readline().strip()
if serial.get(len(num)) is None:
serial[len(num)] = [num]
else:
serial[len(num)].append(num)
for i in range(len(list(serial.values()))):
if len(list(serial.values())[i]) != 1:
num = serial_sort1(list(serial.values())[i])
serial[list(serial.keys())[i]] = num
serial = sorted(serial.items(), key=lambda x: x[0])
ans = []
for i in serial:
for j in i[1]:
print(j)
29380KB
64ms
'알고리즘 > 정렬' 카테고리의 다른 글
자바 | 백준 | 10814 | 나이순 정렬 | Comparator, 람다식 (0) | 2021.02.05 |
---|---|
파이썬 | 백준 | 2865 | 나는 위대한 슈퍼스타K | 소수 출력 (0) | 2020.08.15 |
파이썬 | 백준 | 1728 | 구슬 굴리기 | list에 있는지 : in 없는지 : not in (0) | 2020.08.04 |
파이썬 | 백준 | 10825 | 국영수 (0) | 2020.07.30 |