-
[백준] 경사로Study/Coding Test 2021. 10. 22. 15:46
https://www.acmicpc.net/problem/14890
14890번: 경사로
첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다.
www.acmicpc.net
인덱싱에 주의해야 함.
#define _CRT_SECURE_NO_DEPRECATE #include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <cstring> using namespace std; int N, L; int answer; int board[100][100]; void init() { memset(board, 0, sizeof(board)); } void input() { cin >> N >> L; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cin >> board[i][j]; } } } void solve() { // 가로줄 확인 for (int r = 0; r < N; r++) { int cnt = 1; bool flag = true; for (int c = 0; c < N - 1;) { if (board[r][c] + 1 == board[r][c + 1]) { // /경사 if (cnt >= L) { c++; cnt = 1; } else { flag = false; break; } } else if (board[r][c] == board[r][c + 1] + 1) { // \경사 int h = board[r][c+1]; cnt = 0; int i; for (i = c+1; i < N; i++) { if (cnt >= L) break; if (board[r][i] == h) { cnt++; } else { break; } } if (cnt >= L) { c = i-1; cnt = 0; } else { flag = false; break; } } else if (board[r][c] == board[r][c + 1]) { //평평 cnt++; c++; } else { //경사가 2 이상 차이나는 경우 flag = false; break; } } if (flag) { answer++; } } // 세로줄 확인 for (int c = 0; c < N; c++) { int cnt = 1; bool flag = true; for (int r = 0; r < N - 1;) { if (board[r][c] + 1 == board[r+1][c]) { // /경사 if (cnt >= L) { r++; cnt = 1; } else { flag = false; break; } } else if (board[r][c] == board[r+1][c] + 1) { // \경사 int h = board[r+1][c]; cnt = 0; int i; for (i = r + 1; i < N; i++) { if (cnt >= L) break; if (board[i][c] == h) { cnt++; } else { break; } } if (cnt >= L) { r = i-1; cnt = 0; } else { flag = false; break; } } else if (board[r][c] == board[r+1][c]) { //평평 cnt++; r++; } else { //경사가 2 이상 차이나는 경우 flag = false; break; } } if (flag) { answer++; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //freopen("input.txt", "r", stdin); init(); input(); solve(); cout << answer << endl; return 0; }
'Study > Coding Test' 카테고리의 다른 글
[Time Complexity] PermMissingElem (0) 2022.07.30 [백준] 빗물 (0) 2021.10.23 [백준] 스타트 택시 (0) 2021.10.22 [백준] 로봇 청소기 (0) 2021.10.21 [백준] 사다리 조작 (0) 2021.10.21