문제
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 |
댓글