[삼성 SW 역량 테스트] 경사로
in Coding Test on 삼성 역량테스트
Na982님의 엄청난 풀이 이다.
경사로가 높아지는 경우, 낮아지는 경우에 대해
심도있게 생각해보면 무릎을 탁 치면서 이해가 될 것이다.
Code
#include <iostream>
#include <algorithm>
#define MAX 100
using namespace std;
int N, L, answer = 0;
int map[MAX][MAX], reverses[MAX][MAX];
void check(int a[MAX][MAX]) {
int count = 0;
int i, j;
for (i = 0; i < N; i++) {
count = 1;
for (j = 0; j < N-1; j++) {
if (a[i][j] == a[i][j + 1]) count++;
else if (a[i][j] + 1 == a[i][j + 1] && count >= L) count = 1;
else if (a[i][j] - 1 == a[i][j + 1] && count >= 0) count = 1 - L;
else break;
}
if (j == N - 1 && count >= 0) answer++;
}
}
int main() {
scanf("%d %d", &N, &L);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
scanf("%d", &map[i][j]);
reverses[j][i] = map[i][j];
}
}
check(map);
check(reverses);
printf("%d\n", answer);
return 0;
}