Search
Duplicate

숫자 정사각형

주차
0주차
문제번호
1051
언어
티어
실버
유형
브루트포스
구현
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Memo

어려웠던 점

각 점에서 만족하는 정사각형을 찾는 것이 아닌, 정사각형 자체의 크기를 늘려가며 그 안에서 조건을 만족시키는 것을 파악하는 것. 다시 말해서, 문제를 해결하기 위한 주인공은 각 점이 아닌 정사각형 그 자체이다.

문제 평가

문제를 풀기 위해 먼저 "무식하게 풀어본다"에 초점을 맞춘 문제였다고 생각함. 즉 완전 탐색을 어떻게 적용할 지에 대한 고민이 충분히 필요했던 문제.

Code

제출 날짜

@3/3/2021

메모리

2020KB

시간

0ms
#include <iostream> #include <vector> int N, M; int ans; std::vector<std::string> sq; void input_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { input_faster(); std::cin >> N >> M; sq.resize(N); for (size_t i = 0 ; i < N ; i++) std::cin >> sq[i]; ans = 0; } int find_sq(int sq_size) { for (int i = 0 ; i < N ; i++) { if (i + sq_size >= N) break; for (int j = 0 ; j < M ; j++) { if (j + sq_size >= M) break; if (sq[i][j] == sq[i + sq_size][j]&& sq[i][j] == sq[i][j + sq_size] && sq[i][j] == sq[i+sq_size][j+sq_size]) return (1); } } return (0); } void solve() { int i = 0; while (i <= N && i <= M) { if(find_sq(i)) ans = (i + 1) * (i + 1); i++; } } void print_val() { std::cout << ans; } int main() { input(); solve(); print_val(); return (0); }
C++
복사