250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준#BOJ#1939#중량제한
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#2615#오목
- 백준#boj#16932#모양만들기
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#8012#한동이는영업사원
- 백준#boj#12755
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[ boj : 2799 ] 블라인드 본문
https://www.acmicpc.net/problem/2799
해설 : n과 m의 범위가 100이 최대이니 생성되는 격자의 크기는 501이 최대가 됩니다.
그러면 그냥 싹다 해보면 됩니다. 창문의 형태는 3차원 배열로 미리 정해놓고 for 문 덕지덕지 발라서 하나씩 전부 확인해가면서 차근차근 진행해 나아가면 됩니다.
전형적인 기본구현 문제여서 딱히 해설할 것도 없습니다.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
bool memo[510][510];
string arr[510];
string window[5][4] = {
{
{"...."},
{"...."},
{"...."},
{"...."}
},
{
{"****"},
{"...."},
{"...."},
{"...."}
},
{
{"****"},
{"****"},
{"...."},
{"...."}
},
{
{"****"},
{"****"},
{"****"},
{"...."}
},
{
{"****"},
{"****"},
{"****"},
{"****"}
}
};
void solve();
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
while (t--)solve();
return 0;
}
void solve()
{
int n, m;
int ans[5] = { 0,0,0,0,0 };
cin >> n >> m;
for (int i = 0; i < n * 5 + 1; i++)
cin >> arr[i];
for (int i = 0; i < n * 5 + 1; i++) {
for (int j = 0; j < m * 5 + 1; j++) {
if (memo[i][j])continue;
if (arr[i][j] == '#')continue;
for (int k = 0; k < 5; k++) {
bool flag = false;
for(int p=0;p<4;p++)
for (int q = 0; q < 4; q++) {
if (arr[i+p][j+q] != window[k][p][q]) {
flag = true;
memo[i + p][j + q] = true;
goto h;
}
}
h:;
if (!flag)ans[k]++;
}
}
}
for (int i = 0; i < 5; i++)cout << ans[i]<<" ";
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[ boj : 18223 ] 민준이와 마산 그리고 건우 (0) | 2022.02.01 |
---|---|
memcpy에 string 형을 쓰면 안될까???? (0) | 2022.02.01 |
[ boj : 16507 ] 어두운 건 무서워 (0) | 2022.01.29 |
[ boj : 21608 ] 상어 초등학교 (0) | 2022.01.28 |
[ boj : 2343 ] 기타 레슨 (0) | 2022.01.28 |