안경잡이 구루루

백준 10810 (공 넣기) [Python/ 파이썬] (난이도 ★★☆☆☆) 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 10810 (공 넣기) [Python/ 파이썬] (난이도 ★★☆☆☆)

구루루(gururu) 2023. 8. 22. 13:13
반응형

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

 

10807번: 개수 세기

첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거

www.acmicpc.net

 


나:

N, M = map(int, input().split())
basket = ['0']*N

for repeat in range(M):
    i, j, k = map(int, input().split())
    for put_num in range(i-1, j):
        basket[put_num] = str(k)

print(' '.join(basket))

완성된 코드는 위와 같다.

코드를 작성할 때 최대한 반복문 없이 만들려고 노력했다.

 

(1)
N, M = map(int, input().split())
basket = ['0']*N

바구니 개수 N과 공 넣을 반복 횟수 M을  한줄에 한번에 받았다.

그리고 출력될 때 공이 들어있지 않은 바구니는 0이 출력되기 위한 코드 작성.

이때 하나도 넣지 않을 경우도 고려해서 출력될 0의 개수는 총 바구니 개수 N과 같기에 N을 곱했다 (개인적으로 이거 생각한다고 시간 좀 걸림)  그리고 나중에 join 함수를 쓰기 위해 문자 0 으로 리스트 만듬

 

(2)
for repeat in range(M):
    i, j, k = map(int, input().split())
    for put_num in range(i-1, j):
        basket[put_num] = str(k)

위에서 받은 M 만큼 반복하여 바구니에 공을 넣는다.

i, j ,k 순서대로 공을 넣는 바구니 범위 i ~ j 와 번호k 를 공백을 기준으로 한줄에 받는다.

그래서 위에서 받은 i, j, k 값을 M을 1번 반복할 때 마다 i~j 까지 연속적으로 하나씩 str(k)값으로 넣는다(바꾼다)

이때 나중에 join 함수를 사용하기 위해 문자 str로 k값을 넣는다. 

 

print(' '.join(basket))

최종적으로 바구니에 N개에 넣어진 바구니번호들을 출력할 때 바구니마다 한칸씩 띄어진 채로 한줄에 출력

그래서 리스트 바구니번호(요소값)들 사이에 공백을 넣는 join 함수 이용


다른사람:

출처: https://fpem3309.tistory.com/152

n,m = map(int, input().split())

basket = [0]*n

for l in range(m):
  i,j,k = map(int,input().split())
  for x in range(i,j+1):
    basket[x-1] = k

for x in range(n):
  print(basket[x], end=" ")

완성된 코드는 위와 같다. 

 

(마지막문단 코드)
for x in range(n):
  print(basket[x], end=" ")

주목해야할 부분은 완성된 코드 마지막 문단 출력부분 코드다. 

그냥 반복문을 돌려서 print() 함수와 end 를 같이 사용해 출력될 때 마다 문단을 바꾸지 않고 대신 공백 1번으로 바꿨다.

반응형