본문 바로가기
CS, 알고리즘/알고리즘 및 코테

백준1181번 문제(파이썬)

by 최지철 2023. 6. 27.
728x90
반응형

 

1181번 문제(파이썬) 회고

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
import sys
 
N = int(sys.stdin.readline())
result = []
 
Nlist = [sys.stdin.readline().strip() for _ in range(N)] 
 
 
result = list(set(Nlist))
result.sort()
result.sort(key=lambda x: len(x))
 
for i in range(len(result)):
    print(result[i])
cs

- N 을 입력받는 것에 int(sys.stdin.readline())을 사용한 이유는 시간을 최대한 줄이기 위해서 이다.

 

-list에서 append를 사용하지 않은 이유는 append는 연속된 메모리의 자리가 없을 경우 새롭게 큰 공간을 만든다. 고로 많은 시간을 잡아먹기 때문에 sys.std.readline()을 사용했다. .strip()을 쓴 이유는 1차원리스트로 받을려고 split()을 사용하지 않았는데, 그 경우 "\n"개행문자가 포함되기 때문에 개행문자를 날릴려고 사용했다.

 

-또한 for문으로 중복값을 제거하지 않고 list(set())을 사용한 이유는 2개의 시간 복잡도가 O(N)으로 같고 코드가 짧기 때문이다 set()만 보면 O(1)이고 리스트로 감싸면 O(N)이 된다. 또한 정렬을 한번 하고 다시 정렬을 한 이유는 길이대로 정렬 후 같은 길이면 사전식으로 정렬 해야 되었기 때문이다.

 

728x90
반응형