본문 바로가기
문제 풀이/백준(BOJ)

[Python] 백준 25341번 : 인공 신경망

by 희조당 2023. 3. 1.
728x90

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

 

25341번: 인공 신경망

첫째 줄에 입력층의 입력 크기 $N$, 은닉층의 인공 신경 개수 $M$, 출력값을 계산해야 하는 횟수 $Q$가 공백으로 구분되어 주어진다. $(1 \leq N,M,Q \leq 2\,000)$ 둘째 줄부터 $M$번째 줄에 걸쳐 은닉층의

www.acmicpc.net


💡 문제 풀이

수학 문제이다.

 

주어진 조건대로 구현하면 무조건 시간초과가 발생한다. 따라서 연산회수를 줄어야 할 필요가 있다.

결합법칙을 생각해서 구현하면 쉽게 풀 수 있다.

✔️ 느낀 점

그대로 구현하면 시간 초과가 발생해서 조금 손을 봐줘야한다. 이걸 보면서 약간의 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_)

댓글