BJ 1181 단어 정렬

문제가 궁금하다면?

내가 시도한 방법

  1. 입력단어의 길이를 인덱스로 하는 2차원 배열(words)을 만든다.
    (예를 들어, 길이가 10인 단어는 모두 words[10]에 담겨있을 수 있도록 하기 위해)
  2. words배열을 완성한다.
  3. words를 순회(길이 순)하며(1차원 배열이 나옴), 중복값을 없애고 정렬한다(사전 순)
# 1.
N = int(input())
words = [[] for _ in range(52)]

# 2.
for _ in range(N):
    word = input()
    n = len(word)
    words[n].append(word)

# 3.
for word in words:
    for elem in sorted(list(set(word))):
        print(elem)

다른 분 코드 참고해서 최적화 시도하기

  1. readline 사용하기
  2. set을 사용해서 처음부터 중복값 제거하고 입력받기
  3. 정렬할 때, key=len을 사용하여 길이 정렬시키기(길이로 정렬할 수 있는 지 몰랐음..)
  4. 개행이 필요할 때, join에 이스케이프 문자 활용하기
import sys

N = int(input())
words = set()

for _ in range(N):
    words.add(sys.stdin.readline().rstrip())

words = sorted(sorted(list(words)), key=len)
print('\n'.join(words))

좋은 웹페이지 즐겨찾기