728x90
반응형
https://www.acmicpc.net/problem/20291
문제를 풀면서 몰랐던 개념
[Python] 리스트 요소별 개수 구하기
1) dictionary를 사용하기
: 딕셔너리에는 키 값이 하나만 존재한다는 특징을 가지고 있기 때문에 각 요소별 개수를 구할 수 있다.
dict = {}
test = [1,2,1,3,4,5,3,3]
for i in test:
if dict.get(i):
dict[i] += 1
else:
dict[i] = 1
print(dict)
# 출력결과
>>> {1: 2, 2: 1, 3: 3, 4: 1, 5: 1}
2) collections 모듈 사용하기
import collections
dict = {}
test = [1,2,1,3,4,5,3,3]
dict = collections.Counter(test)
print(dict)
# 출력결과
>>> Counter({3: 3, 1: 2, 2: 1, 4: 1, 5: 1})
[Python] 딕셔너리 정렬
-> key를 이용한 정렬
: sortet() 함수 사용
dict = {1: 2, 2: 1, 3: 3, 4: 1, 5: 1}
sdict = sorted(dict.items())
print(sdict)
# 출력결과
>>> [(1, 2), (2, 1), (3, 3), (4, 1), (5, 1)]
* items() 함수는 key-value 쌍이 tuple로 구성된 리스트가 리턴된다.
[Python] 반복문 2차원 (튜플)리스트 요소 출력
: 변수를 두 개 설정해주기
# 리스트
a = [[10,20],[30,40],[50,60]]
for x,y in a:
print(x,y)
>>> 10 20
>>> 30 40
>>> 50 60
# 튜플리스트
arr = [('icpc', 2), ('spc', 2), ('txt', 3), ('world', 1)]
for i,j in arr:
print(i,j)
>>> icpc 2
>>> spc 2
>>> txt 3
>>> world 1
문제의 접근 방법
- 파일 이름과 확장자를 분리할 수 있는 방법 생각하기
- 리스트의 각 요소별 개수 출력하기
- 사전 순으로 정렬
내가 막혔던 부분
딕셔너리에 대한 개념
문제 풀이 방법
(1) 바탕화면에 있는 파일의 개수 N 입력받기
(2) N개의 파일 이름과 확장자를 '점(.)'을 기준으로 나눠서 입력받기
(3) 파일의 확장자만(인덱스 1번째 요소) arr에 추가하기
(4) arr안에서 미리 선언해둔 딕셔너리 dict를 이용해 리스트 속 각 확장자의 개수를 구하기
(5) 키 값(확장자 이름)을 기준으로 정렬
(6) 출력형식에 맞춰서 확장자 이름과 그 개수를 출력하기
소스코드
N = int(input())
arr = []
dict = {}
for i in range(N):
file = input().split('.')
arr.append(file[1])
for i in arr:
if dict.get(i):
dict[i] += 1
else:
dict[i] = 1
dict = sorted(dict.items())
for i,j in dict:
print(i,j)
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 카드 바꿔치기 : 18766번 - Python (0) | 2021.08.01 |
---|---|
[백준] 멀티버스 Ⅰ : 20291번 - Python (0) | 2021.07.30 |
[백준] 스텔라(STELLA)가 치킨을 선물했어요 : 15905번 - Python (0) | 2021.07.30 |
[백준] 너의 핸들은 : 15819번 - Python (0) | 2021.07.30 |
[백준] 치킨 TOP N : 11582번 - Python (0) | 2021.07.30 |