728x90
Overview
- 체감 난이도: ★★☆☆☆
- 문제 레벨: 실버 5
- 문제 유형: 정렬
- 풀이 상태: 답안참고 / 스스로 해결
- 추후: 다시 풀어보기 / 간단 복습 / 완벽 이해
[문제]
[코드]
groups = {}
for x in lst:
if x[0] not in groups:
groups[x[0]] = []
groups[x[0]].append(x[1])
딕셔너리를 사용해서 첫 번째 단어(x[0])가 같은 것들끼리 그룹화
- 예: groups = {'cgiosy': ['cologne', 'jhnah', 'sean', 'leejseo', 'junseo']}
result = []
for key in sorted(groups.keys()): # x[0] 오름차순
sorted_second = sorted(groups[key], reverse=True) # x[1] 내림차순
for val in sorted_second:
result.append([key, val])
그룹화된 데이터를 정렬
- sorted(groups.keys()): 첫 번째 단어들을 오름차순으로 정렬
- sorted(groups[key], reverse=True): 각 그룹 내의 두 번째 단어들을 내림차순으로 정렬
[전체 코드]
import sys
input = sys.stdin.readline
N = int(input())
lst = [list(input().strip().split()) for _ in range(N)]
groups = {}
for x in lst:
if x[0] not in groups:
groups[x[0]] = []
groups[x[0]].append(x[1])
result = []
for key in sorted(groups.keys()): # x[0] 오름차순
sorted_second = sorted(groups[key], reverse=True) # x[1] 내림차순
for val in sorted_second:
result.append([key, val])
for l in result:
print(*l)
반응형
'🚩 Coding Test > Baekjoon' 카테고리의 다른 글
[BOJ][Python] 18110 solved.ac / round() 반올림 안 되는 문제 (0) | 2025.02.07 |
---|---|
[BOJ][Python] 7568 덩치 (0) | 2025.02.07 |
[BOJ][Python] 2108 통계학 (1) | 2025.02.01 |
[BOJ][Python] 1018 체스판 다시 칠하기 (0) | 2025.02.01 |
[BOJ][Python] 20153 영웅이는 2의 거듭 제곱을 좋아해! (0) | 2025.01.20 |