접근 방법
1. 박스 사이즈는 2~min(N,M)값 까지 증가하며 확인. 맞는값이 없을 경우 기본값 1
2. 2중 for문을 통해 전체 map 탐색(범위는 n,m -size이하)
3. 각 모서리의 값이 같으면 ans에 size 값을 대입
Javascript
function solution() {
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.trim()
.split("\n")
.map((val) => val.trim());
//input
let [n, m] = input.splice(0, 1)[0].split(" ");
let square = [];
for (let i = 0; i < n; i++) {
square.push(input[i].split("").map((v) => +v));
}
let min = Math.min(n, m);
let ans = 1;
for (let size = 2; size <= min; size++) {
for (let i = 0; i <= n - size; i++) {
let end = size - 1;
for (let j = 0; j <= m - size; j++) {
let tmp = square[i][j];
if (square[i][j + end] === tmp && square[i + end][j] === tmp && square[i + end][j + end] === tmp) {
ans = size;
break;
}
}
}
}
console.log(ans * ans);
}
solution();
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin); //제출 시 삭제
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,m;
cin>>n>>m;
vector<string> square;
for(int i=0;i<n;i++){
string tmp;
cin>> tmp;
square.push_back(tmp);
}
int s_min = min(n, m);
int ans = 1;
for (int size = 2; size <= s_min; size++) {
for (int i = 0; i <= n - size; i++) {
int end = size - 1;
for (int j = 0; j <= m - size; j++) {
int tmp = square[i][j];
if (square[i][j + end] == tmp && square[i + end][j] == tmp && square[i + end][j + end] == tmp) {
ans = size;
break;
}
}
}
}
cout<<ans*ans<<"\n";
return 0;
}
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 블랙잭 2798 (Javascript,c++) (0) | 2022.06.11 |
---|---|
[baekjoon] 영화감독 숌 1436 (Javascript, c++) (0) | 2022.06.11 |
[baekjoon] 한수 1065 (Javascript, c++) (0) | 2022.06.10 |
[baekjoon] 행렬 곱셈 2740 (Javascript, c++) (0) | 2022.06.09 |
[baekjoon] 문자열 1120 (javascript, c++) (0) | 2022.06.09 |