슈콩

[BOJ] 백준 14890 경사로 본문

Algorithms/Baekjoon

[BOJ] 백준 14890 경사로

shukong 2025. 9. 23. 10:35
가능한 경로 1개씩 Check !

 

 

[문제]

https://www.acmicpc.net/problem/14890

 

 

[소스 코드]

import java.io.*;
import java.util.*;

import javax.print.attribute.standard.NumberUpSupported;
public class Main {
	static int n,l;
	static int[][] map;
	static int result = 0;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		l = Integer.parseInt(st.nextToken());
		map = new int[n][n];
		for(int i=0;i<n;i++) {
			st = new StringTokenizer(br.readLine());
			for(int j=0;j<n;j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		for(int i=0;i<n;i++) {
			if(canRow(i)) result++;
			if(canCol(i)) result++;
		}
		System.out.println(result);
	}
	private static boolean canRow(int r) {
		boolean[] visit = new boolean[n];
		for(int i=0;i<n-1;i++) {
			int diff = map[r][i] - map[r][i+1];
			if(diff>1 || diff<-1) return false;
			if(diff==1) {
				for(int j=1;j<=l;j++) {
					if(i+j>=n || visit[i+j]) return false;
					visit[i+j] = true;
				}
			}
			else if(diff==-1) {
				for(int j=0;j<l;j++) {
					if(i-j<0 || visit[i-j]) return false;
					visit[i-j] = true;
				}
			}
		}
		return true;
	}
	private static boolean canCol(int c) {
		boolean[] visit = new boolean[n];
		for(int i=0;i<n-1;i++) {
			int diff = map[i][c] - map[i+1][c];
			if(diff>1 || diff<-1) return false;
			if(diff==1) {
				for(int j=1;j<=l;j++) {
					if(i+j>=n || visit[i+j]) return false;
					visit[i+j] = true;
 				}
			}
			else if(diff==-1) {
				for(int j=0;j<l;j++) {
					if(i-j<0 || visit[i-j]) return false;
					visit[i-j] = true;
				}
			}
		}
		return true;
	}
}

'Algorithms > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 15683 감시  (0) 2025.09.23
[BOJ] 백준 14891 톱니바퀴  (0) 2025.09.23
[BOJ] 백준 14889 스타트와 링크  (0) 2025.09.22
[BOJ] 백준 2467 용액  (0) 2025.09.22
[BOJ] 백준 14888 연산자 끼워넣기  (0) 2025.09.22