[백준/BOJ] 백준 15999번 : 뒤집기
2021. 3. 25. 13:55ㆍ알고리즘 문제풀이
4방향에 해당 위치 색깔과 다른 색깔이 있으면 해당 위치 색깔은 원본 색깔과 같다는 것을 이용해서 문제를 해결했다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>
#include <string>
#include <cmath>
using namespace std;
int n, m;
vector<string> board;
int dxdy[4][2] = { {0,-1},{-1,0},{0,1},{1,0} };
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n >> m;
for (int i = 0; i < n; i++)
{
string input;
cin >> input;
board.push_back(input);
}
long long cnt = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
pair<int, int> here = make_pair(i, j);
bool original = false;
for (int dir = 0; dir < 4; dir++)
{
pair<int, int> there = make_pair(here.first + dxdy[dir][0], here.second + dxdy[dir][1]);
if (there.first >= 0 && there.first < n && there.second >= 0 && there.second < m)
{
//4방향에 다른 색깔이 있으면 원본 색깔과 같다는게 확인된다
if (board[there.first][there.second] != board[here.first][here.second])
{
original = true;
break;
}
}
}
if (original == false)
cnt++;
}
long long result = 1;
for (long long i = 1; i <= cnt; i++)
result = (((result * 2) + 1000000007) % 1000000007);
cout << result;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 17092번 : 색칠 공부 (0) | 2021.03.25 |
---|---|
[백준/BOJ] 백준 20210번 : 파일 탐색기 (0) | 2021.03.25 |
[백준/BOJ] 백준 15997번 : 승부 예측 (0) | 2021.03.25 |
[백준/BOJ] 백준 1035번 : 조각 움직이기 (0) | 2021.03.25 |
[백준/BOJ] 백준 4256번 : 트리 (0) | 2021.03.25 |