직사각형 센서판의 각 칸에 경보 횟수 counts와 활성 상태 enabled가 있어요. 맨 위·맨 아래 행 또는 맨 왼쪽·맨 오른쪽 열에 있고 활성 상태가 1인 칸의 경보만 합해요. 모서리나 행·열이 하나뿐인 판에서도 같은 칸은 한 번만 세요.
solution(counts, enabled)가 합계를 반환하도록 빈칸을 채워 주세요.
매개변수와 반환값
- 두 2차원 리스트의 모양은 같아요. 행·열 수는 각각 1~30이에요.
- 경보 횟수는 0~100, 활성 상태는 0 또는 1이에요.
- 반환값은 합계인 정수예요.
예시
counts = [[1, 2, 3], [4, 50, 6], [7, 8, 9]],enabled = [[1, 1, 1], [1, 1, 0], [1, 1, 1]]이면 결과는34이에요.counts = [[4, 5, 6]],enabled = [[1, 0, 1]]이면 결과는10이에요.
실행용 입출력
첫 줄에 rows cols, 다음 rows줄에 경보 횟수, 그 다음 rows줄에 활성 상태를 입력해요. 한 줄에는 cols개 정수가 있어요. 합계 하나를 출력해요.
예시 입력
3 3 1 2 3 4 50 6 7 8 9 1 1 1 1 1 0 1 1 1
예상 결과
34
예시 입력
1 3 4 5 6 1 0 1
예상 결과
10
핵심 개념
array-2d:counts[r][c]는 r행 c열의 값이에요.len(counts)는 행 수,len(counts[0])는 열 수예요. 인덱스는 0부터 시작해요.counting-aggregation: 한 칸을 한 번 방문하며 합하면 모서리가 여러 조건에 맞아도 중복되지 않아요.conditionals:or는 하나라도 맞으면 참,and는 모두 맞으면 참이에요.(0, rows - 1)은 두 값을 묶은 튜플이며in으로 어느 값과 같은지 확인할 수 있어요.
입력 하네스의 input()은 한 줄의 문자열을 읽고, .split()은 공백으로 항목을 나눠요. map(int, ...)는 각 항목을 정수로 바꾸고 list(...)는 그 결과를 리스트로 모아요. range(n)은 0부터 n-1까지 반복해요. 하네스는 함수 호출을 위한 자체 연결이며 풀이의 반환 계약과 구분해요.