[algorithm] 백준 10810 - 공 넣기
안녕하세요. 심심한 코딩쟁이입니다.
오늘은 백준 10810번 문제 - 공 넣기 에 대한 풀이를 살펴보도록 하겠습니다.
풀이에 사용한 언어는 Python3 입니다.
문제 해석과 풀이 다 함께 살펴보시죠.

백준 BAEKJOON 10810
https://www.acmicpc.net/problem/10810
10810번: 공 넣기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이
www.acmicpc.net
문제 해석
배열을 다루는 문제라고 분류가 되어있는 문제입니다.
파이썬에서는 리스트를 활용하면 되겠죠??
문제에서 주어지는 여러줄의 숫자를 통해 어느 구간의 바구니에 특정 수의 공을 집어 넣기를 반복합니다.
그리고 최종적으로 바구니들에 어떤 공이 들어있는지를 출력해주는 문제입니다.
공이 들어있지 않다면 0을 출력하라고하니 처음부터 0을 모두 넣어주면 편할 것 같네요.
풀이
n, m = map(int, input().split())
basket = [0 for _ in range(n)]
for _ in range(m):
a, b, c = map(int, input().split())
basket[a-1:b] = [c for _ in range(b-a+1)]
print (*basket)
풀이 해석 및 팁
위 풀이에서 설명이 필요할 것 같은 부분은 2개정도가 있습니다.
첫 째로 리스트에 요소를 채워넣을 때 for 문을 이용하는 방법입니다.
빈 리스트를 만들어서 for문으로 append를 여러번해도 되지만 위 풀이에서처럼 리스트를 생성하면서
바로 요소들을 채워넣어줄 수 있습니다.
둘 째는 Asterisk(*) 입니다.
basket이라는 리스트 앞에 Asterisk(*)를 붙여주면 Unpacking의 기능을 해주면서 우리가 원하는 출력 결과를
얻을 수 있습니다.
첫 째로 설명한 부분에서 리스트안에 for 문을 넣어서 같은 요소가 반복되는 리스트를 만들었는데
Asterisk(*)를 사용하면 basket = [0] * N 이런식으로도 똑같은 요소를 여러개 가진 리스트를 생성할 수 있습니다.
여기까지 백준 10810번 공 넣기의 풀이였습니다.
문제 자체적으로는 큰 어려움이 없는 문제이지만 리스트를 생성하는 테크닉이나
파이썬의 Asterisk(*)를 사용해볼 수 있는 문제여서 포스팅으로 다루어보았습니다.
추후에 파이썬의 Asterisk(*)를 주제로 자세한 사용법과 활용법 등을 설명해드리겠습니다.
감사합니다.
반응형
'programming > algorithm' 카테고리의 다른 글
[algorithm] 백준 11005 - 진법 변환 2 (0) | 2023.04.06 |
---|---|
[algorithm] 백준 2745 - 진법 변환 (0) | 2023.04.05 |
[algorithm] 백준 13909 - 창문 닫기 (0) | 2023.04.03 |
[algorithm] 백준 17103 - 골드바흐 파티션 (0) | 2023.04.02 |
[algorithm] 백준 4948 - 베르트랑 공준 (0) | 2023.04.01 |