https://www.acmicpc.net/problem/20291
문제 해석
파일 이름이 주어진다.
확장자별로 분리하고, 확장자 별 파일의 개수를 확장자의 사전식 오름차순으로 출력하는 문제이다.
코드
input = __import__('sys').stdin.readline
n = int(input())
d = {}
id = []
for _ in range(n):
a, b = input().strip().split('.')
if b in d:
d[b] += 1
else:
d[b] = 1
id.append(b)
id.sort()
for name in id:
print(name, d[name])
TC
문제 풀이
문제에서 입력받는 문자열의 특이한 케이스는 없음을 판단했다.
먼저 떠올린 풀이방법은
1. 해시를 사용한 자료구조로 Key는 확장자명, Value는 확장자명의 수를 담는 딕셔너리를 선언한다.
2. 문자열 처리는 특별한 케이스가 없기때문에 . 으로 구분하는 split 함수를 사용해준다. ("."을 기준으로 문자열을 잘라준다.)
3. in 문법을 통해 딕셔너리에 확장자명을 키로 확인하며 존재하면 해당 키의 값을 += 1, 없다면 1로 생성해준다.
4. 딕셔너리에 존재하지 않다면 확장자 오름차순 정렬 및 출력을 위해 id에 확장자명을 추가해준다.
5. id의 값을 정렬 후 순서대로 딕셔너리의 값을 출력한다.
'알고리즘 > BOJ' 카테고리의 다른 글
[백준/파이썬] 5052번 전화번호 목록 (0) | 2022.10.22 |
---|---|
[백준/파이썬] 1306번 달려라 홍준 (0) | 2022.10.21 |
[백준/파이썬] 18405번 경쟁적 전염 (0) | 2022.10.12 |
[백준/파이썬] 25063번 짱해커 이동식 KAUPC 항공대 알고리즘 대회 문제 (0) | 2022.10.06 |
[백준/파이썬] 14222번 배열과 연산 (0) | 2022.10.06 |