20165번: 인내의 도미노 장인 호석
사람을 화나게 하는 법은 다양하다. 그 중에서도 악질은 바로 열심히 세워놓은 도미노를 넘어뜨리는 것이다. 이번에 출시된 보드 게임인 "너 죽고 나 살자 게임"은 바로 이 점을 이용해서 2명이
www.acmicpc.net
백준 대회가 있길래 참여해서 풀어봤는데 테스트 케이스 2개만 맞추고 나머진 실패했다..
이후에 참고해서 다시 풀어봤는데 조건처리 부분에서 미숙한 부분 때문에 실패한 것 같다.
#include <iostream>
#include <algorithm>
using namespace std;
int n, m, r, x, y, ans;
char dir;
int ar[105][105], status[105][105];
void f(int x, int y, char dir) {
if (!ar[x][y]) return;
int dx = 0, dy = 0, cnt;
if (dir == 'E') dy = 1;
else if (dir == 'W') dy = -1;
else if (dir == 'S') dx = 1;
else dx = -1;
cnt = ar[x][y];
while (x >= 0 && x < n && y >= 0 && y < m && cnt >= 1) {
if (ar[x][y]) ans++;
cnt = max(cnt - 1, ar[x][y] - 1);
ar[x][y] = 0;
x += dx, y += dy;
}
}
int main() {
ios::sync_with_stdio(false); cin.tie(0);
cin >> n >> m >> r;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
cin >> ar[i][j], status[i][j] = ar[i][j];
while (r--) {
cin >> x >> y >> dir;
f(x - 1, y - 1, dir);
cin >> x >> y;
ar[x - 1][y - 1] = status[x - 1][y - 1];
}
cout << ans << endl;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cout << (ar[i][j] ? 'S' : 'F') << ' ';
}
cout << '\n';
}
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
16236 아기 상어 (0) | 2020.11.22 |
---|---|
BOJ 11048 이동하기 (0) | 2020.11.20 |
BOJ 4386 별자리 만들기 (0) | 2020.11.14 |
BOJ 1922 네트워크 연결 (0) | 2020.11.14 |
BOJ 10282 해킹 (0) | 2020.11.11 |