백준 10810 - 공 넣기 (python)

2023. 3. 8. 02:49알고리즘

문제

https://www.acmicpc.net/problem/10810

 

10810번: 공 넣기

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

www.acmicpc.net

 

풀이

처음 시작시 n과 m 을 입력받고 길이가 n인 리스트를 만든다.

그 이후로 i, j, k를 입력받은 뒤 리스트의 i부터 j번째까지를 k로 바꾸는 작업을 m번 반복한다.

파이썬으로 구현하면 꽤 간단하지만 인덱스는 0번이 시작이라는 것을 고려하여 풀이해야 한다.

파이썬의 range 함수와 for문을 이용하면 간단히 구현할 수 있고,

join함수는 str형이 저장된 리스트에만 사용할 수 있다는 것을 주의해야 한다.

 

n,m = map(int,input().split()) #n, m 입력받기
basket= [0]*n    #길이가 n인 리스트 생성

for i in range(m):
    i, j, k = map(int,input().split()) #i, j, k 입력받기
    for target in range(i-1, j):    #target에 i-1부터 j-1까지 넣으면서 반복
        basket[target] = k   #target번째 항목 변경

basket = map(str,basket) #join함수를 사용하기 위해 문자열로 변경
print(" ".join(basket)) #join함수를 이용하여 출력

 

 

 


 

range함수

range(i, j, k)
# i부터 k씩 더하며 j미만인 범위가 저장된 iterable한 객체를 반환한다.
# i와 k는 생략할 수 있으며 생략시 i=0, k=1이 기본값이다.

#예시
range(10) # => 0,1,2,3,4,5,6,7,8,9
range(3, 7) # => 3,4,5,6
range(2, 8, 3) # => 2,5

 join함수

str.join(iterable한 객체)
# iterable한 객체 사이사이를 str로 구분하여 출력한다.
# iterable한 객체에 string형태가 아닌 값이 있으면 TypeError가 발생

#예시
"-".join(["2023","03","08"])  # "2023-03-08" 반환
"/".join(("C:","Users","admin")) # "C:/Users/admin" 반환
" ".join(["1","2","3","4"]) # "1 2 3 4" 반환
"~".join((1,2,3,4)) #TypeError 발생(set안에 int형이 있음)