Baekjoon

Baekjoon 1181번 단어 정렬

ppwag 2020. 7. 25. 23:53

문제

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

걸린 시간

00 : 08 : 23

풀이

Python3

if __name__ == "__main__":
    N = int(input())

    clen = [[] for _ in range(0, 51)]

    for i in range(0, N):
        # True : 중복된 값이 존재, False 중복된 값이 없음.
        flag = False
        word = input()
        for j in clen[len(word)]:
            if j == word:
                flag = True

        if flag == False:
            clen[len(word)].append(word)

    for i in range(0, 51):
        clen[i].sort()
        for j in clen[i]:
            print(j)    

효율적인 풀이

Python3

import sys
input = sys.stdin.readline

if __name__ == "__main__":
    N = int(input())

    dic = [set() for _ in range(0, 51)]

    for _ in range(0, N):
        word = input().strip()
        dic[len(word)].add(word)

    for i in dic:
        for j in sorted(i):
            print(j)

중복을 허용하지 않는 set 집합을 이용해 시간을 많이 절약했다.

'Baekjoon' 카테고리의 다른 글

Baekjoon 10816번 숫자 카드 2  (0) 2020.07.26
Baekjoon 9012번 괄호  (0) 2020.07.26
Baekjoon 10814번 나이순 정렬  (0) 2020.07.25
Baekjoon 2164번 카드2  (0) 2020.07.25
Baekjoon 2609번 최대공약수와 최소공배수  (0) 2020.07.25

댓글