슈콩

[BOJ] 14890 경사로 본문

Algorithms/Baekjoon

[BOJ] 14890 경사로

shukong 2025. 12. 1. 23:17

 

 

[문제]

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

 

 

[소스 코드]

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

public class Main {
	static int n,l;
	static int[][] map;
	public static void main(String[] args) throws Exception {
		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());
			}
		}
		int result = 0;
		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=1;i<n;i++) {
			int diff = map[r][i-1] - map[r][i];
			if(diff>1 || diff<-1) return false;
			if(diff==1) {
				for(int j=0;j<l;j++) {
					if(i+j>=n) return false;
					if(visit[i+j] || map[r][i+j]!=map[r][i]) return false;
					visit[i+j] = true;
				}
			}
			if(diff==-1) {
				for(int j=1;j<=l;j++) {
					if(i-j<0) return false;
					if(visit[i-j] || map[r][i-j]!=map[r][i-1]) return false;
					visit[i-j] = true;
				}
			}
		}
		return true;
	}
	private static boolean canCol(int c) {
		boolean[] visit = new boolean[n];
		for(int i=1;i<n;i++) {
			int diff = map[i-1][c] - map[i][c];
			if(diff>1 || diff<-1) return false;
			if(diff==1) {
				for(int j=0;j<l;j++) {
					if(i+j>=n) return false;
					if(visit[i+j] || map[i+j][c]!=map[i][c]) return false;
					visit[i+j] = true;
				}
			}
			if(diff==-1) {
				for(int j=1;j<=l;j++) {
					if(i-j<0) return false;
					if(visit[i-j] || map[i-j][c]!=map[i-1][c]) return false;
					visit[i-j] = true;
				}
			}
		}
		return true;
	}
}

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

[BOJ] 15683 감시  (0) 2025.12.02
[BOJ] 14891 톱니바퀴  (0) 2025.12.01
[BOJ] 14889 스타트와 링크  (0) 2025.12.01
[BOJ] 14888 연산자 끼워넣기  (0) 2025.12.01
[BOJ] 14502 연구소  (0) 2025.12.01