728x90
https://www.acmicpc.net/problem/1181
- 생각
- 정렬 조건 2개를 동시에 못한다고 생각하여 조건을 1개씩 하기로 함
- 길이가 같은 문자끼리 묶어서 정렬
- 길이가 i인 문자는 words[i]에 넣기
- 같은 길이인 문자에서 사전식 정렬
- 길이가 같은 문자끼리 묶어서 정렬
- 정렬 조건 2개 이상
- list.sort(key = lambda x: (조건1, 조건2))
- import 를 적지 않고 사용시 NameError가 남
- 정렬 조건 2개를 동시에 못한다고 생각하여 조건을 1개씩 하기로 함
- 코드1 - 길이순 정렬 후 사전식 정렬
from sys import stdin
# 단어의 개수
N = int(input())
# 같은 단어 제외하기 위해 set
words = [set() for _ in range(51)]
# 길이가 같은 문자끼리 함께 넣기
for _ in range(N):
word = stdin.readline().rstrip()
words[len(word)].add(word)
# 길이가 적은 순으로 사전식 정렬해서 출력
for i in range(1,51):
if words[i]:
i_list = sorted(list(words[i]))
for j in i_list:
print(j)
- 코드2 - 정렬 동시에
from sys import stdin
# 단어의 개수
N = int(input())
# 단어를 중복 제거 후 리스트로
words = list(set(stdin.readline().rstrip() for _ in range(N)))
# 단어를 길이순정렬 + 사전식정렬
words.sort(key=lambda x :(len(x),x))
for word in words:
print(word)
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 7569. 토마토 - Python (0) | 2022.06.15 |
---|---|
[백준] 7576. 토마토 - Python (0) | 2022.06.13 |
[프로그래머스] Lv.1 크레인 인형뽑기 게임 (0) | 2022.06.13 |
[백준] 4949. 균형잡힌 세상 - Python (0) | 2022.06.13 |
[백준] 7586. 덩치 - Python (0) | 2022.06.12 |
댓글