rows×cols 좌석의 모든 칸은 처음에 비어 있어요. marks의 [r, c] 좌석을 기록 순서대로 사용 중으로 표시해요. 같은 좌석이 여러 번 등장해도 상태는 사용 중 하나예요. 모든 좌석이 사용 중인 행의 수를 구해요.
solution(rows, cols, marks)가 올바른 수를 반환하도록 잘못된 한 줄을 고쳐 주세요.
매개변수와 반환값
- rows와 cols는 각각 1
30, 표시 기록 수 n은 0500이에요. - r은 0
rows-1, c는 0cols-1이에요. - 반환값은 모든 칸이 표시된 행의 수인 정수예요.
예시
rows = 2,cols = 3,marks = [[0, 0], [0, 1], [0, 2], [1, 1]]이면 결과는1이에요.rows = 3,cols = 2,marks = [[0, 0], [1, 0], [1, 1], [2, 1]]이면 결과는1이에요.
실행용 입출력
첫 줄에 rows cols n, 다음 n줄에 r c를 입력해요. 행 수 하나를 출력해요.
예시 입력
2 3 4 0 0 0 1 0 2 1 1
예상 결과
1
예시 입력
3 2 4 0 0 1 0 1 1 2 1
예상 결과
1
핵심 개념
array-2d: 2차원 리스트는 바깥 리스트가 각 행 리스트를 보관해요.seats[r][c] = 1은 한 좌석만 표시해요.counting-aggregation: 0·1로 구성된 행에서sum(line)은 사용 중인 좌석 수예요.
[0] * cols는 0이 cols개인 한 행이에요. 바깥 리스트에서 같은 행 객체를 여러 번 참조하는 것과 행을 매번 새로 만드는 것은 달라요. 리스트 컴프리헨션은 반복마다 안쪽 식을 다시 계산해요. _는 사용하지 않는 반복 변수 이름이에요.
입력 하네스의 input()은 한 줄의 문자열을 읽고, .split()은 공백으로 항목을 나눠요. map(int, ...)는 각 항목을 정수로 바꾸고 list(...)는 그 결과를 리스트로 모아요. range(n)은 0부터 n-1까지 반복해요. 하네스는 함수 호출을 위한 자체 연결이며 풀이의 반환 계약과 구분해요.