인프런 커뮤니티 질문&답변
코드 한번 봐주시면 감사하겠습니다!
작성
·
169
0
제가 적은 코드가 시간 초과가 떠서 강사님께서 올려주신 코드로 채점해봤는데도 시간 초과가 나옵니다...
한번 봐주시면 감사하겠습니다~!
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
int n, m;
cin >> n >> m;
vector<vector<int> > dy(n, vector<int>(m, 0));
vector<string> board;
vector<int> answer(min(n, m) + 2);
for (int i = 0; i < n; i++) {
string tmp;
cin >> tmp;
board.push_back(tmp);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (board[i][j] == '0') continue;
int a = 0, b = 0, c = 0;
if (i - 1 >= 0) a = dy[i - 1][j];
if (j - 1 >= 0) b = dy[i][j - 1];
if (i - 1 >= 0 && j - 1 >= 0) c = dy[i - 1][j - 1];
int m = min(a, min(b, c));
dy[i][j] = m + 1;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
for (int k = 1; k <= dy[i][j]; k++) {
answer[k]++;
}
}
}
for (int i = 1; ; i++) {
if (answer[i] == 0) break;
cout << i << " " << answer[i] << endl;
}
return 0;
}
어디가 문제인지 잘 모르겠습니다 :(




