강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ismy123님의 프로필 이미지
ismy123

작성한 질문수

코딩테스트 실전 모의고사(with C++) : 대기업 대비

3. 정사각형 그리기 문제해설(다이나믹 : DP)

코드 한번 봐주시면 감사하겠습니다!

작성

·

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;
}

어디가 문제인지 잘 모르겠습니다 :(

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

제가 보기에는 문제가 없는 코드인것 같습니다. 채점서버가 간혹 그럴수 있습니다.

ismy123님의 프로필 이미지
ismy123

작성한 질문수

질문하기