728x90
https://www.acmicpc.net/problem/25341
💡 문제 풀이
수학 문제이다.
주어진 조건대로 구현하면 무조건 시간초과가 발생한다. 따라서 연산회수를 줄어야 할 필요가 있다.
결합법칙을 생각해서 구현하면 쉽게 풀 수 있다.
✔️ 느낀 점
그대로 구현하면 시간 초과가 발생해서 조금 손을 봐줘야한다. 이걸 보면서 약간의 DP의 느낌이 났다..!
💻 코드
import sys ; input = sys.stdin.readline
n, m, q = map(int, input().split())
h = [list(map(int, input().split())) for _ in range(m)]
w = list(map(int, input().split()))
nh = [0] * n
s = w[-1]
for i in range(m):
s += h[i][-1] * w[i]
for j in range(1, h[i][0]+1):
nh[h[i][j] - 1] += h[i][j + h[i][0]] * w[i]
for _ in range(q):
inputs = list(map(int, input().split()))
sum_ = s
for i in range(n):
sum_ += inputs[i] * nh[i]
print(sum_)
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[Python] 백준 1005번 : ACM Craft (0) | 2023.03.03 |
---|---|
[Python] 백준 14499번 : 주사위 굴리기 (0) | 2023.03.02 |
[Python] 백준 15686번 : 치킨 배달 (0) | 2023.02.27 |
[Python] 백준 1520번 : 내리막 길 (0) | 2023.02.26 |
[Python] 백준 17396번 : 백도어 (0) | 2023.02.25 |
댓글