새소식

⌨️ Algorithms/백준

[Python] 백준 20291번_파일 정리

2023. 3. 16. 21:50

  • -

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

 

20291번: 파일 정리

친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를

www.acmicpc.net

 

  • 스브러스의 요청
    • 파일을 확장자 별로 정리해서 몇 개씩 있는지 알려줘
    • 보기 편하게 확장자들을 사전 순으로 정렬해 줘
  • 입력
    • 첫째 줄에 바탕화면에 있는 파일의 개수 N이 주어짐 (1≤N≤50 000)
    • 둘째 줄부터 N개 줄에 바탕화면에 있는 파일의 이름이 주어짐
    • 파일의 이름은 알파벳 소문자와 점(.)으로만 구성되어 있음
    • 점은 정확히 한 번 등장하며, 파일 이름의 첫 글자 또는 마지막 글자로 오지 않음
    • 각 파일의 이름의 길이는 최소 3, 최대 100
  • 출력
    • 확장자의 이름과 그 확장자 파일의 개수를 한 줄에 하나씩 출력
    • 확장자가 여러 개 있는 경우 확장자 이름의 사전순으로 출력
  • 시간 제한: 3초
  • 메모리 제한: 1024 MB

 

"""
입출력 예시)

8
sbrus.txt
spc.spc
acm.icpc
korea.icpc
sample.txt
hello.world
sogang.spc
example.txt
            -> icpc 2
               spc 2
               txt 3
               world 1
"""

 

 

## 의사코드 ##

# 파일의 확장자 별로 정리
# 확장자 = 입력.split('.')[1]

# 확장자들만 리스트에 저장

# 확장자 별 개수 카운트
# from collections import Counter

# 확장자들 이름으로 사전 순으로 정렬
# sorted(Counter(확장자 리스트).items())

 

 

 

 

from collections import Counter
n = int(input())
extension_list = [] # 확장자들을 저장할 리스트 
for _ in range(n):
    # 입력의 확장자만 가져오기
    extension = input().split('.')[1]
    extension_list.append(extension)

# 확장자의 개수를 카운트하고, 확장자들을 사전 순으로 정렬
cnt = sorted(Counter(extension_list).items())
for c in cnt:
    print(c[0], c[1])

 

 

-> PyPy3로 제출 시 시간 단축 가능

 

 

  • Counter의 key 값을 기준으로 정렬
    • sorted(Counter.items())
  • Counter의 value 값을 기준으로 정렬
    • Counter.most_common()

 

 

 

 

 

 

https://www.ebeb-blog.com/2021/08/06/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%B9%B4%EC%9A%B4%ED%8A%B8-%EC%A0%95%EB%A0%AC-counter-sort-with-aes-ddt/

 

파이썬 리스트 카운트, 정렬 (Counter, sort) with. AES DDT - EBeb's BLOG

파이썬 리스트의 Counter함수를 사용한 카운트와 그 결과의 정렬

www.ebeb-blog.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!