myt-algorithm-practice/Samsung SW Certi Adv
[Algorithm][C++] BOJ 14890 경사로
hotamul
2021. 9. 28. 21:12
url: https://www.acmicpc.net/problem/14890
14890번: 경사로
첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다.
www.acmicpc.net
na982님 풀이 참고
[삼성 SW 역량 테스트] 경사로
#include int n, l, ret = 0; int map[200][100]; int main() { scanf("%d %d", &n, &l); for (int y = 0; y < n; ++y) { for (int x = 0; x < n; ++x) { scanf("%d", &map[y][x]); } } for (int y = 0; y < n; ++..
na982.tistory.com
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int N, L;
int map[200][100];
int ans;
void check() {
int r, c;
for (r = 0; r < 2 * N; r++) {
int flag = 1;
for (c = 0; c < N - 1; c++) {
if (map[r][c] == map[r][c + 1]) {
flag++;
}
else if (map[r][c] + 1 == map[r][c + 1] && flag >= L) {
flag = 1;
}
else if (map[r][c] - 1 == map[r][c + 1] && flag >= 0) {
flag = (1 - L);
}
else {
break;
}
}
if (c == (N - 1) && flag >= 0) {
ans++;
}
}
}
int main() {
// 입 력
scanf("%d %d", &N, &L);
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
scanf("%d", &map[r][c]);
}
}
// 세로길 가로길로 변환
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
map[r + N][c] = map[c][r];
}
}
// 체 크
check();
// 출 력
printf("%d", ans);
return 0;
}