#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
int N, L;
int map[110][110];
int ans;
 
void Rotate()
{
    int temp[110][110];
    
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
            temp[i][j] = map[i][j];
        }
    }
    
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
            map[i][j] = temp[N-1-j][i];
        }
    }
}
 
int main(void)
{
//    freopen("B14890_input.txt", "r", stdin);
    
    cin >> N >> L;
    
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
            cin >> map[i][j];  
        }
    }
    
    for(int i = 0; i < N; i++)
    {
        int up = 0;
        
        for(int j = 0; j < N-1; j++)
        {                
            // 내리막 
            if(map[i][j]-map[i][j+1== 1)
            {
                int std = map[i][j];
                int cnt = 0;
                
                for(int k = j+1; k <= j+&& k < N; k++)
                {
                    if(std-1 == map[i][k])
                    {
                        cnt++;
                    }
                    else
                    {
                        break;
                    }
                }
                
                if(cnt != L)
                {
                    break;
                }
                else
                {
                    j += (L-1);
                    up = j+2;
                }
            }
            // 오르막 
            else if(map[i][j]-map[i][j+1== -1)
            {
                int std = map[i][j+1]; 
                int cnt = 0;
 
                for(int k = j; k > j-&& k >= up; k--)
                {
                    if(std-1 == map[i][k])
                    {
                        cnt++;
                    }
                    else
                    {
                        break;
                    }
                }
                
                if(cnt != L)
                {
                    break;
                }
            }
            // 평지 
            else if(map[i][j]-map[i][j+1== 0)
            {
                // pass
            }
            else
            {
                break;
            }    
    
            if(j >= N-2)
            {
                ans++;
                break;
            }
        }
    }
    
    // 왼쪽 90도 회전 
    Rotate();
    
    for(int i = 0; i < N; i++)
    {
        int up = 0;
        
        for(int j = 0; j < N-1; j++)
        {                
            // 내리막 
            if(map[i][j]-map[i][j+1== 1)
            {
                int std = map[i][j];
                int cnt = 0;
                
                for(int k = j+1; k <= j+&& k < N; k++)
                {
                    if(std-1 == map[i][k])
                    {
                        cnt++;
                    }
                    else
                    {
                        break;
                    }
                }
                
                if(cnt != L)
                {
                    break;
                }
                else
                {
                    j += (L-1);
                    up = j+2;
                }
            }
            // 오르막 
            else if(map[i][j]-map[i][j+1== -1)
            {
                int std = map[i][j+1]; 
                int cnt = 0;
 
                for(int k = j; k > j-&& k >= up; k--)
                {
                    if(std-1 == map[i][k])
                    {
                        cnt++;
                    }
                    else
                    {
                        break;
                    }
                }
                
                if(cnt != L)
                {
                    break;
                }
            }
            // 평지 
            else if(map[i][j]-map[i][j+1== 0)
            {
                // pass
            }
            else
            {
                break;
            }    
    
            if(j >= N-2)
            {
                ans++;
                break;
            }
        }
    }
    
    cout << ans;
    
    return 0;
}
cs

+ Recent posts