본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 5][Python] 1181번 : 단어 정렬

by 빛밤하늘 2021. 5. 3.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

1181번: 단어 정렬

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

www.acmicpc.net

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# 첫째 줄에 단어의 개수 N을 입력합니다.
# 1 <= N <= 20,000
N = int(input())

# 중복된 단어는 하나만 있어야 하므로 단어들을 저장하는 세트 변수를 선언합니다.
words = set()

# 단어의 개수 N만큼 반복합니다.
for word_index in range(N):
    # 단어를 하나 입력합니다.
    # 단어의 길이는 50을 넘지 않습니다.
    word = input()

    # 입력한 단어를 words 세트 변수에 넣어줍니다.
    words.add(word)

# words 세트 변수를 리스트 변수로 바꿔줍니다. 
words = list(words)
# words 리스트 변수 내부의 값들을
# 길이가 짧은 것부터
# 길이가 같다면 사전 순으로 정렬해줍니다.
words.sort(key=lambda word: (len(word), word))

# words 리스트 변수 내부의 단어들을 하나씩 출력해줍니다.
for word in words:
    print(word)

결과

 

제출하고 나서 다른 사람들의 파이썬 결과를 봤는데

저의 제출 결과의 실행 시간인 1024ms처럼 네 자리 숫자인 사람들도 많은 반면에,

세 자리 숫자나 두 자리 숫자의 실행 시간을 가진 결과들도 많았습니다.

더 빠른 실행 시간을 가진 코드들을 보며 어떻게 더 빠른 결과를 낼 수 있는지 공부해봐야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글