1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

✏️ 내가 작성한 코드 - 1 (for문 2개 사용)

import sys
N = int(sys.stdin.readline().strip())
lst = []

for _ in range(N):
    n = sys.stdin.readline().strip()
    if n not in lst: # 중복 단어 안들어가게
        lst.append(n)

lst.sort() # 문자열 사전 순으로 정리 됨
lst.sort(key=len) # 원소들 길이별로 정리됨

for cha in lst:
    print(cha)

 

✏️ 내가 작성한 코드 - 2 (set() 사용)

import sys
N = int(sys.stdin.readline().strip())
lst = []

for _ in range(N):
    lst.append(sys.stdin.readline().strip())

lst = list(set(lst)) # 중복 제거 위해 set사용. sort위해 다시 list()로.
lst.sort()
lst.sort(key=len)

for cha in lst:
    print(cha)

 

✏️ 내가 작성한 코드 - 3 (set(),join() 사용)

import sys
N = int(sys.stdin.readline().strip())
lst = []

for _ in range(N):
    lst.append(sys.stdin.readline().strip())

lst = list(set(lst))
lst.sort()
lst.sort(key=len)

print('\n'.join(lst)) # join()함수 사용.

 

✏️ 참고

위에서부터 set(),join() 사용 / set() 사용 / for문 2개 사용 채점 결과다.

set(),join() 사용 시 시간이 더 줄어든 것을 확인할 수 있다.

 

sort()는 원소가 문자열일 때 사전 순으로 정렬해준다.

sort(key=len)은 원소들의 길이별로 정렬해준다

+ Recent posts