백준 1431 정렬
정렬문제입니다. https://www.acmicpc.net/problem/1431
단순한 정렬이 아닌 3가지의 우선순위가 정해져 있습니다.
이 역시 다른 언어로 풀면 어려울 것 같습니다.
하지만 python은 강력합니다.
아이디어는 다음과 같습니다.
- input시 시리얼번호의 숫자를 모두 더해 추가로 list에 저장한다 ( 예 : ( 'a2b3' , 5) )
- 1 번째 우선순위로 길이를 통해 정렬한다.
- 2 번째 우선순위로 숫자를 통해 정렬한다.
- 3 번째 우선순위로 사전순으로 정렬한다.
python의 사전 순서는 다음과 같습니다.
숫자 알파벳순서이며 같은 문자의 대소문자 경우 소문자가 더 큽니다.
예 : 1<2<3.... < A < a < B < b ..... < Z < z
이 역시 이전 포스팅 정렬문제와 마찬가지로 python의 sort와 key를 람다함수로 적용하면 쉽게 풀 수 있습니다.
###### python의 문자열 기준
# a < b < c ... <z 사전순
# B < b 소문자가 더 큼
#
n = int( input() )
numbers = {'0', '1', '2', '3', '4', '5', '6' , '7','8','9'} # possible input numbers
array = []
for i in range(n):
serial = input()
sum = 0
for i in serial:
if ( i in numbers ):
sum+=int(i)
array.append( [len(serial), serial, sum])
array.sort(key= lambda x: (x[0],x[2],x[1]) ) # 길이 순 정렬
for i in array:
print(i[1])
코드가 긴 버전은 내장함수를 사용하지 않고 구현해보았습니다. ( 심심풀이 )
틀린이유 : 없음
Author And Source
이 문제에 관하여(백준 1431 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tngus3722/백준-1431-정렬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)