Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- react-redux
- 일상
- 스프링
- 백준
- Java
- 토이프로젝트
- 프로그래머스
- 공부
- 알고리즘
- 정렬
- Spring
- 타입스크립트
- CPU 스케줄링
- 자료구조
- Operating System
- OS
- codeup
- js to ts
- web
- 기초100제
- 협업
- 리덕스장바구니
- react
- C++
- memory
- 파이썬
- Redux
- error
- 분할메모리할당
- 코드업
Archives
- Today
- Total
감자튀김 공장🍟
[백준/1181] 단어 정렬 (with 파이썬) 본문
반응형
✔ 문제
✔ 풀이
😂 나의 정답 코드 (1540ms)
import sys
input = sys.stdin.readline
n = int(input())
s = []
s_len = []
for i in range(n):
x = input().rstrip()
if x in s:
continue
s.append(x)
s_len.append([x, len(x)])
s_len.sort(key=lambda x: (x[1], x[0]))
for i in s_len:
print(i[0])
굳이 s의 길이만 저장한 리스트를 따로 만들고 그걸 또 lambda로 정렬했다 sys를 쓰면 뭐합니까,, 느린걸요..?
1540ms 나온거 보고 진짜 눈이 튀어나올 뻔
😉 다른 정답 코드 (208ms)
n = int(input())
sort_list = []
for _ in range(n):
s = input()
sort_list.append(s)
sort_list = list(set(sort_list))
sort_list.sort()
sort_list.sort(key=len)
for x in sort_list:
print(x)
✔ 설명
그냥 sort_list에 입력값을 저장한 후 이를 set -> list 과정을 통해 중복을 제거한 list로 다시 바꿔준다.
후에 알파벳 순서로 정렬을 위해 .sort()를 사용하고, 이를 키값에 길이를 줘서 정렬하면 된다.
먼저 키 값에 길이를 주고, 정렬을 하게 되면 최종 결과가 길이로 정렬된 것이 아니라 알파벳 순으로 정렬이 되어 출력된다.
즉, .sort()를 먼저 사용하는 이유는 먼저 sort()에서 input() 값이 같은 길이일 경우 사전순으로 정렬되어야하기 때문이다. 후에 .sort(key=len)을 하게되면 이미 같은 길이는 사전순으로 정렬되어 있는 리스트를 길이가 오름차순으로 되도록 정렬한다.
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[백준/18870] 좌표 압축 (with 파이썬) (0) | 2022.11.18 |
---|---|
[백준/10814] 나이순 정렬 (with 파이썬) (0) | 2022.11.17 |
[백준/11651] 좌표 정렬하기 2 (with 파이썬) (0) | 2022.11.15 |
[백준/11650] 좌표 정렬하기 (with 파이썬) (0) | 2022.11.14 |
[백준/1427] 소트인사이드 (with 파이썬) (0) | 2022.11.13 |
Comments