For Programmer
백준 1181번 파이썬 문제풀이(정렬 - 단어 정렬) 본문
728x90
코드
n = int(input()) # 문자열로 숫자를 입력받는다.
array = [] # 알파벳를 담을 리스트 선언
setArray = set() #중복을 제거할 set함수 선언
for _ in range(n):
alphabet = input()
setArray.add(alphabet) #중복을 제거하며 set함수에 담는다.
for i in setArray: #set함수의 각 문자열에 접근하여
array.append(i) #각 문자열을 다시 리스트에 담는다
array.sort() # 1. 사전순으로 정렬
array.sort(key=len) # 2. 길이대로 정렬
for i in array:
print(i)
-> 이문제의 핵심은 문제대로 길이부터 정렬하고 사전순으로 정렬을 하면 길이대로 정렬한 부분은 리셋이 된다. 따라서 반대로 사전순으로 정렬을 먼저하고 길이대로 정렬을 해주어야 답을 찾을 수 있다. 위 문제의 케이스 테스트를 살펴보면 1. 사전순으로 우선 정렬을 하면
array 배열에는 ['but', 'cannot', 'hesitate', 'i', 'im', 'it', 'more', 'no', 'wait', 'wont', 'yours'] 과 같이 정렬이 된다.
이상태에서 2. 길이대로 정렬을 하면 ['i', 'im', 'it', 'no', 'but', 'more', 'wait', 'wont', 'yours', 'cannot', 'hesitate'] 로 다시 정렬이 된다.
길이부터 정렬하고 사전순으로 정렬을 하면 사전순으로 정렬하기 위해 sort를 했을때 길이값이 무시가 된채 정렬을 해버리기 때문이다.
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 18870번 파이썬 문제풀이(정렬 - 좌표 압축) (0) | 2021.10.10 |
---|---|
백준 10814번 파이썬 문제풀이(정렬 - 나이순 정렬) (0) | 2021.10.10 |
백준 11650,11651번 파이썬 문제풀이(정렬 - 좌표 정렬하기 1,2) (0) | 2021.10.09 |
백준 2108번 파이썬 문제풀이(정렬 - 통계학) (2) | 2021.10.09 |
백준 10989번 파이썬 문제풀이(정렬 - 수 정렬하기3) (0) | 2021.10.08 |
Comments