← 실전 문제

독립된 좌석 행 만들기

Python디버깅

rows×cols 좌석의 모든 칸은 처음에 비어 있어요. marks의 [r, c] 좌석을 기록 순서대로 사용 중으로 표시해요. 같은 좌석이 여러 번 등장해도 상태는 사용 중 하나예요. 모든 좌석이 사용 중인 행의 수를 구해요.

solution(rows, cols, marks)가 올바른 수를 반환하도록 잘못된 한 줄을 고쳐 주세요.

매개변수와 반환값

  • rows와 cols는 각각 130, 표시 기록 수 n은 0500이에요.
  • r은 0rows-1, c는 0cols-1이에요.
  • 반환값은 모든 칸이 표시된 행의 수인 정수예요.

예시

  1. rows = 2, cols = 3, marks = [[0, 0], [0, 1], [0, 2], [1, 1]]이면 결과는 1이에요.
  2. 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까지 반복해요. 하네스는 함수 호출을 위한 자체 연결이며 풀이의 반환 계약과 구분해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기