728x90
SMALL
https://www.acmicpc.net/problem/14500
14500번: 테트로미노
폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변
www.acmicpc.net
브루트포스로 해결한다 하더라도 시간복잡도는 O(NM)이다.
가능한 모양의 개수 19개를 N*M개만큼 적용하는 것이다!
그러므로 맘 편하게 브루트포스로 해결했다.
다른 풀이를 찾아보니 depth를 5로 정하여 탐색하는 방법도 있는 듯하다.
#include <iostream>
#include <queue>
#include <algorithm>
#include <deque>
using namespace std;
// O(NM)
const int MAX = 500;
int n, m;
int board[MAX][MAX];
pair<int, int> Tet[][4] = {
{{0, 0}, {0, 1}, {0, 2}, {0, 3}},
{{0, 0}, {1, 0}, {2, 0}, {3, 0}},
{{0, 0}, {0, 1}, {1, 0}, {1, 1}},
{{0, 0}, {1, 0}, {2, 0}, {2, 1}},
{{0, 0}, {0, 1}, {1, 1}, {2, 1}},
{{0, 0}, {0, 1}, {0, 2}, {-1, 2}},
{{0, 0}, {1, 0}, {0, 1}, {0, 2}},
{{0, 0}, {0, 1}, {0, 2}, {1, 2}},
{{0, 0}, {1, 0}, {2, 0}, {2, -1}},
{{0, 0}, {1, 0}, {1, 1}, {1, 2}},
{{0, 0}, {1, 0}, {2, 0}, {0, 1}},
{{0, 0}, {1, 0}, {1, 1}, {2, 1}},
{{0, 0}, {1, 0}, {0, 1}, {-1, 1}},
{{0, 0}, {0, 1}, {1, 1}, {1, 2}},
{{0, 0}, {0, 1}, {-1, 1}, {-1, 2}},
{{0, 0}, {0, 1}, {0, 2}, {1, 1}},
{{0, 0}, {0, 1}, {1, 1}, {-1, 1}},
{{0, 0}, {0, 1}, {0, 2}, {-1, 1}},
{{0, 0}, {1, 0}, {2, 0}, {1, 1}},
};
void sol() {
int sum = 0, ans = 0;
for (int i = 0; i < 19; i++) {
for (int x = 0; x < n; x++) {
for (int y = 0; y < m; y++) {
sum = 0;
for (auto cur : Tet[i]) {
int nx = x + cur.first;
int ny = y + cur.second;
if (nx < 0 || nx >= n || ny < 0 || ny >= m) {
sum = 0;
break;
}
sum += board[nx][ny];
}
ans = max(ans, sum);
}
}
}
cout << ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> board[i][j];
}
}
sol();
return 0;
}
반례
https://www.acmicpc.net/board/view/61597
글 읽기 - 14500 테크노마트 좋은 반례 공유(끌올)합니다.
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
728x90
LIST
'PS > 삼성 SW 역량 테스트 기출' 카테고리의 다른 글
[삼성 SW 역량 기출] 백준 3190 (C++) 뱀 (0) | 2022.02.18 |
---|---|
[삼성 SW 역량 기출] 백준 13460 (C++) 구슬 탈출 2 (0) | 2022.02.15 |
[삼성 SW 역량 기출] 백준 14499 (C++) 주사위 굴리기 (2) | 2021.12.26 |