알고리즘 공부(C++)

백준 20291 파일 정리 (파이썬) 문자열

혀니리리 2022. 9. 7. 12:17
728x90

20291번: 파일 정리 (acmicpc.net)

 

20291번: 파일 정리

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

www.acmicpc.net

import sys
input = sys.stdin.readline
N = int(input())
lst = {}
for i in range(N):
    file = input().strip()
    tmp = file[file.find('.') + 1:]
    if tmp in lst:
        lst[tmp] += 1
    else:
        lst.setdefault(tmp, 1)
lst2 = sorted(lst.items())
for i in lst2:
    print(i[0], i[1])

푸는 덴 어렵지 않았지만 알아야 할 것이 많았던 문제..

1.딕셔너리 사용법 알기

2.개행 제거하는 방법 알기

 => str.strip() 이런 식으로

3.마지막 인덱스 참고하는 방법 알기

 => str.find('.') : 첫 .이 나온 인덱스 알 수 있음 (+ 자매품 str.rfind('.')뒤부터 인덱스 번호 찾음)

4.딕셔너리에 요소 추가하고 values 증가시키는 방법 알기

 => 처음 인덱스에 요소 추가를 할 때는 lst.setdefault(key, values)

       그 뒤부터는 lst[key] += 1이런 식으로 하면 된다.

5.딕셔너리를 키값 기준으로 오름차순 정렬하는 방법 알기

 => lst2 = sorted(lst.items()) 

이렇게 하면 오름차순으로 정렬 가능하다.

6.리스트 안의 튜플 요소 출력하는 방법 알기

 5번처럼 정렬했으면 [(,), (,)] 이런 식으로 되는데 그럴 때는 for문으로 리스트를 돌면서 i[0] i[1]이런 식으로 안의 요소들을 구할 수 있다.

 

등을 알아야 이 문제를 수월하게 풀 수 있다.

 

728x90