hotamul의 개발 이야기

[Algorithm][C++] BOJ 14890 경사로 본문

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님 풀이 참고

https://na982.tistory.com/93

 

[삼성 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;
}
Comments