-
[SWEA] #4014 _ 활주로 건설Problem Solving/SWEA 2019. 8. 28. 22:29
[활주로 건설] https://swexpertacademy.com/main/code/problem/problemDetail.do
제약 사항대로 코드를 구현하면 되는 시뮬레이션 문제이다.
[ 소스 코드 ]
#include <cstdio> #include <cstdlib> #include <algorithm> #define MAX 21 using namespace std; int map[MAX][MAX], N, X; int solve(); int main() { int test_case; scanf("%d", &test_case); //input for (int i = 1; i <= test_case; i++) { scanf("%d %d", &N, &X); for (int j = 0; j < N; j++) { for (int k = 0; k < N; k++) scanf("%d", &map[j][k]); } printf("#%d %d\n", i, solve()); } return 0; } int solve() { int count = 0, tmp, is_need; int pre, j; for (int i = 0; i < N; i++) { //row tmp = 1; is_need = 0; pre = map[i][0]; for (j = 1; j < N; j++) { if (pre == map[i][j]) { tmp++; continue; } if (abs(pre - map[i][j]) != 1) break; if (is_need) { if (tmp < X) break; tmp -= X; is_need = 0; } if (pre > map[i][j]) is_need = 1; else if (pre < map[i][j] && tmp < X) break; tmp = 1; pre = map[i][j]; } if (j < N) continue; if (is_need == 1 && tmp < X) continue; count++; } for (int i = 0; i < N; i++) { //col tmp = 1; is_need = 0; pre = map[0][i]; for (j = 1; j < N; j++) { if (pre == map[j][i]) { tmp++; continue; } if (abs(pre - map[j][i]) != 1) break; if (is_need) { if (tmp < X) break; tmp -= X; is_need = 0; } if (pre > map[j][i]) is_need = 1; else if (pre < map[j][i] && tmp < X) break; tmp = 1; pre = map[j][i]; } if (j < N) continue; if (is_need == 1 && tmp < X) continue; count++; } return count; }
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] #1952 _ 수영장 (0) 2019.10.29 [SWEA] #1949 _ 등산로 조성 (0) 2019.10.26 [SWEA] #2112 _ 보호 필름 (0) 2019.08.28 [SWEA] #1210 _ Ladder1 (0) 2019.08.28 [SWEA] #1209 _ Sum (0) 2019.08.12 댓글