https://www.acmicpc.net/problem/10810
-- 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다.
-- (조건1) 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다.
--도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다.
-- (조건2) 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다.
--공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오.
입력
-- 둘째 줄부터 M개의 줄에 걸쳐서 공을 넣는 방법이 주어진다.
-- 각 방법은 세 정수 i j k로 이루어져 있으며, i번 바구니부터 j번 바구니까지에 k번 번호가 적혀져 있는 공을 넣는다는 뜻이다.
-- 예를 들어, 2 5 6은 2번 바구니부터 5번 바구니까지에 6번 공을 넣는다는 뜻이다.
알고리즘 문제를 풀다보면 요구하는게 간결해서 문제에 대한 이해가 빠른게 있고, 조건이 너무 많아서 문제를 이해하는데 한참 걸리는 경우가 있음. 내 경우는 이번게 후자였다,,,
처음에 공을 넣는다만 보고 엥 1번에 4개 아님? 이러고 있었는데 조건2가 초기화의 조건을 주기 때문에 당연히 아니었음
예제 입력 둘째줄부터 보면,
1번부터 2번까지의 바구니에 공을 3번 넣는다.
3 3 0 0 0
3번부터 4번까지의 바구니에 공을 4번 넣는다.
3 3 4 4 0
1번부터 4번까지 공을 1번 넣는다.
1 1 1 1 0
2번부터 2번까지 2개 넣는다.
1 2 1 1 0
,,,하지만 내가 여전히 문제를 잘못 이해하고 있었다!
공을 3번 넣는다는게 아니라 3번 공을 넣는다는 뜻 이었음.
예제 입력 둘째줄부터 보면,
1번부터 2번까지의 바구니에 3번 공을 넣는다.
3 3 0 0 0
3번부터 4번까지의 바구니에 4번 공을 넣는다.
3 3 4 4 0
1번부터 4번까지 공을 1번 공을 넣는다.
1 1 1 1 0
2번부터 2번까지 2번 공을 넣는다.
1 2 1 1 0
공을 6번 넣는다 vs 6번 공을 넣는다 오늘도 내 독해력이 한탄스러울 뿐임,,
n, m = map(int, input().split())
basket = [0] * n
for a in range(m):
a, b, c = map(int, input().split)
for a in range(a, b):
basket[a] = c
print(" ". join(basket))
컴파일 에러! 그래서 구글링 진행
List A의 Array가 [ 1, 2, 3]라고 치면
A[0] = 1, A[1] =2, A[2] = 3였던 거시다,,
그래서 basket[a - 1] 장착
n, m = map(int, input().split())
basket = [0] * n
for _in range(m):
a, b, c = map(int, input().split)
for a in range(a, b):
basket[a-1] = c
print(" ". join(basket))
하지만 또파일 에러,,
1부터 10까지의 값을 출력하고 싶다면?
for i in rnage(1, 10):
print(i)
위의 식은 1부터 9까지의 값이 출력됨
때문에 10에 1을 더해 11로 만들어줄 필요가 있음,,
마찬가지로!
n, m = map(int, input().split())
basket = [0] * n
for _in range(m):
a, b, c = map(int, input().split)
for a in range(a, b+1):
basket[a-1] = c
print(" ". join(basket))
??????왜 오륜데????
Join 함수는 문자형이 저장된 리스트에만 사용할 수 있는것이었다.
때문에 map 함수를 사용해 str형으로 변형해줄 필요가 있었음
n, m = map(int, input().split())
basket = [0]*n
for _ in range(m):
a, b, c = map(int, input().split)
for a in range(a, b+1):
basket[a-1] = c
for _ in range(n):
basket = map(str,basket)
print(" ".join(basket))
이래도 오류가 뜬다 왠지 아는 사람ㅠㅠㅠㅠㅠ
--> 바보였다 split() 괄호를 넣지 않는 오타로 인한 발생
n, m = map(int, input().split())
basket = [0]*n
for _ in range(m):
a, b, c = map(int, input().split())
for a in range(a, b+1):
basket[a-1] = c
for _ in range(n):
basket = map(str,basket)
print(" ".join(basket))
로 정답..