← 실전 문제

빈칸 없이 채우는 표식

C++빈칸 채우기

0과 1로 이루어진 격자에서 1인 칸들이 빈칸 없는 직사각형 하나를 이루는지 검사해요. 가로 또는 세로 길이가 1이어도 직사각형이에요. 직사각형을 이루면 1인 칸 수를, 내부에 빈칸이 있으면 -1을 반환해요. 1인 칸이 없으면 0이에요.

int solution(vector<vector<int>> board)가 요구한 값을 반환하도록 빈칸을 채워 주세요.

매개변수와 반환값

행 수와 열 수는 각각 110이고 모든 행의 길이는 같아요. 값은 0 또는 1이에요. 반환값은 -1 또는 0100인 정수예요. edges의 반환 순서는 최소 행, 최대 행, 최소 열, 최대 열이에요.

예시

  1. board={{0, 1, 1}, {0, 1, 1}}이면 4를 반환해요. 오른쪽 두 열이 빈칸 없는 2×2 직사각형이에요.
  2. board={{1, 1}, {1, 0}}이면 -1를 반환해요. 2×2 경계 안의 오른쪽 아래가 비어 있어요.

실행용 입출력

첫 줄에 행 수 열 수, 이후 각 줄에 행 하나를 입력해요. main은 입력을 매개변수로 바꾸고 반환값을 출력하는 채점 하네스예요. 풀이 대상은 solution과 제공된 보조 함수의 빈칸이에요.

예시 입력

2 3
0 1 1
0 1 1

예상 결과

4

예시 입력

2 2
1 1
1 0

예상 결과

-1
핵심 개념
  • array-2d: 행과 열의 위치를 구분해요.
  • function-design: 보조 함수의 인자와 반환 계약을 연결해요.
  • stl-vector: 벡터의 크기와 인덱스로 매개변수를 읽어요.

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

로그인하고 풀기