Skip to content

Latest commit

 

History

History
65 lines (51 loc) · 1.7 KB

File metadata and controls

65 lines (51 loc) · 1.7 KB

백준 20291번 파일 정리

20291


코드 설명

  • '.'을 기준으로 파일 종류를 파악해 그 개수를 저장해야 한다.
  • 출력할 때에는 파일 종류를 사전 순으로 정렬해서 출력해야 한다.

소스코드

  • 메모리 : 44032 KB
  • 시간 : 680 ms
import sys

n = int(input())
zips = {}
for i in range(n):
	name = sys.stdin.readline().strip()
	for n in range(len(name)):
		if name[n] == '.':
			if name[n+1:] not in zips.keys():
				zips[name[n+1:]] = 1
			else:
				zips[name[n+1:]] += 1

zips = sorted(zips.items())

for z in zips:
	print(z[0], z[1])

오답 노트

  • 파일을 입력받은 뒤에 파일명만 따로 저장해 리스트에 담았다. 그때 개수를 고려하지 않아 개수를 세는 과정을 한 번 더 해야 했다.
  • 비효율적으로 코드를 짜다 보니 시간도 오래 걸리고 리스트의 개수도 늘어나 시간초과가 된 것 같다.
  • 이러한 과정으로 인해 효율적인 방법을 강구하던 중 딕셔너리를 생각하게 되었고 key값에 파일 종류명을 value 값에 그 파일종류의 개수를 담는 식으로 코드를 짜게 되었다. -> 위 코드 참고

오답 코드

import sys

n = int(input())
zips = []
for i in range(n):
	name = sys.stdin.readline().strip()
	for n in range(len(name)):
		if name[n] == '.':
			zips.append(name[n+1:])

count = []
kinds = []
for z in zips:
	if z not in kinds:
		count.append([z,zips.count(z)])
		kinds.append(z)

count.sort()
for c in count:
	print(c)