BOJ : 단어 정렬 [1181]

재현·2021년 6월 27일
0
post-custom-banner

1. 문제


알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.

길이가 짧은 것부터
길이가 같으면 사전 순으로

출처 : https://www.acmicpc.net/problem/1181

2. 아이디어


  • mine
    1. 입력 받을 때 조건문을 활용하여 중복을 제거한다.
    2. 길이 순으로 정렬 후 크기 순으로 정렬한다. (오름차순)
  • clone
    1. 입력 받을 때 set을 활용하여 중복을 제거한다. (❗정렬을 위해 list로 다시 돌려준다.❗)
    2. 길이 순으로 정렬 후 크기 순으로 정렬한다. (오름차순)

3. 코드


mine

n = int(input())
input_string = []
# 입력
for i in range(n):
  temp = input()
  if temp not in input_string: # 중복이 아닌 단어만 리스트에 추가
    input_string.append(temp)
# 길이 순서로 정렬한 후 같은 길이에서는 크기 순서로 정렬
input_string.sort(key=lambda x : (len(x), x))
# 출력
for result in input_string:
  print(result)

clone

N = int(input())
word = []

for _ in range(N):
    word.append(input())

word = list(set(word))
word.sort(key=lambda x : (len(x),x))

print("\n".join(word))

출처 : https://velog.io/@cosmos/BOJ-1181-python

4. 결과 비교


1. mine

2. clone

  • 메모리는 큰 차이가 없으나 속도에서 clone한 코드가 나의 코드보다 약 6배 정도 빠르다.
profile
성장형 프로그래머
post-custom-banner

0개의 댓글