Heram's Studyroom 자세히보기

CODES/백준 | Solved.ac

[ 백준 파이썬 문제풀이 ] 단계별로 풀어보기 / 4-5 1차원 배열 공 넣기 #10810

Heram06 2025. 4. 14. 06:05
반응형

[ 백준 파이썬 문제풀이 ] 단계별로 풀어보기 / 4-5 1차원 배열  공 넣기 #10810

 


 

문제 📢

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다.

도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다.

공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오.

 

 

입력 

출력

첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다.
둘째 줄부터 M개의 줄에 걸쳐서 공을 넣는 방법이 주어진다.
각 방법은 세 정수 i j k로 이루어져 있으며, i번 바구니부터 j번 바구니까지에 k번 번호가 적혀져 있는 공을 넣는다는 뜻이다.
예를 들어, 2 5 6은 2번 바구니부터 5번 바구니까지에 6번 공을 넣는다는 뜻이다. (1 ≤ i ≤ j ≤ N, 1 ≤ k ≤ N)

도현이는 입력으로 주어진 순서대로 공을 넣는다.
1번 바구니부터 N번 바구니에 들어있는 공의 번호를 공백으로 구분해 출력한다. 공이 들어있지 않은 바구니는 0을 출력한다.

 

 

나의 생각 🌟

 

나는 이 문제가 이해가 안 됐었다. 

그래서 예제를 보며 오랜 시간을 사용하며 이해하려 했지만 그래도 헷갈렸다.

 

예제입력에서 둘쨋줄에서 1(첫 번째 요소)과 2(두 번째 요소) 사이를 모두 3으로 바꾸라는 뜻이다

그런 식으로  i, j번째 사이 바구니의 공을 k가 적힌 공으로 바꾸면 된다

 

예제를 통해서 보면

 

0 0 0 0 0

3 3 0 0 0

3 3 4 4 0

1 1 1 1 0

1 2 1 1 0

 

이렇게 되는 것이다.

내가 적은 답안 💡

 

import sys

N, M = map(int, sys.stdin.readline().split())
basket = [0] * N	#basket이란 리스트를 만들고 N개의 요소를 저장 

for a in range(M):	#반복문
    i, j, k = map(int, sys.stdin.readline().split())
    for b in range(i-1, j):		#반복문
        basket[b] = k		#b번째 (현재 반복되는 횟수 번째)에 있는 요소의 값을 k로 변경
        
print(' '.join(map(str, basket)))

 

for b in range(i-1, j):

여기서 i-1, j를 한 이유는 리스트는 0번째부터 시작하기 때문이다

또한 j는 j앞 번째 까지만 반복하므로 -1을 해줄 필요가 없다.

 

리스트 함수 내 요소를 변경하려면

 

list[x] = k를 사용하면 된다.

리스트의 x번째 요소를 k로 변경하는 함수이다.

 

아래 링크는 리스트에 관련된 함수들을 정리한 사이트다. 한 번씩 확인해보면 좋을 것 같다

https://docs.python.org/ko/3.13/tutorial/datastructures.html

 

5. Data Structures

This chapter describes some things you’ve learned about already in more detail, and adds some new things as well. More on Lists: The list data type has some more methods. Here are all of the method...

docs.python.org

 

느낀점🎻

 

이 문제는 이해하기가 어려웠던 것 같다

그럴 땐 예제 입력을 보자.

 


 

이 블로그는 개발자를 꿈꾸는 사람이 열심히 공부하며 적어가는 공간입니다.

제 답안과 풀이가 다를 수 있지만, 정확한 정보를 위해 여러번 검토하며 적겠습니다!

반응형