티스토리 뷰

알고리즘/BOJ

[BOJ 14890] 경사로

히더 2018. 8. 2. 18:51

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


#include <iostream>

using namespace std;


int i, j;

int N;

int L;

int arr[105][105];

int arr2[105][105];

int arr3[105][105];

int result;


void get_info()

{

cin >> N >> L;

for (i = 0;i < N;i++)

{

for (j = 0; j < N; j++)

{

cin >> arr[i][j];

arr2[i][j] = 10;

arr3[i][j] = 10;

}

}


}


void print_info()

{

cout << result;

}


int main()

{

int count; // 이전의 0의 갯수

get_info();


result = 2*N;

// 가로

for (i = 0;i < N;i++) 

{

for (j = 1; j < N; j++)

{

arr2[i][j - 1] = arr[i][j] - arr[i][j - 1]; // 차이 값 arr2에 저장

}

}


for (i = 0; i < N;i++)

{

count = 0;

for (j = 0; j < N-1; j++)

{

int temp = result;


if (arr2[i][j] > 1 || arr2[i][j] < -1) // 1초과 -1 미만 경우

{

result--;

}


if (arr2[i][j] == 0) // 0인 경우

{

count++;

}


if (arr2[i][j] == 1) // 1인 경우

{

if (count < (L - 1))

result--;


count = 0;

}


if (arr2[i][j] == -1) // -1인 경우

{

if ( (L == 1) && (arr2[i][j + 1] == 1))

{

result--;

}



for (int k = j + 1; k < (L - 1) + j+1; k++)

{

if (arr2[i][k] != 0)

{

result--;

k = (L - 1) + j + 1;

}

}


if (arr2[i][(L - 1) + j + 1] == 0)

j = (L - 1) + j + 1;

else

j = (L - 1) + j + 1 - 1;

count = 0;

}


if (temp != result)

j = N - 1;

}

count = 0;


// 세로

for (j = 0;j < N;j++) 

{

for (i = 1; i < N; i++)

{

arr3[j][i - 1] = arr[i][j] - arr[i-1][j]; // 차이 값 arr2에 저장

}

}


for (i = 0;i < N;i++)

{

count = 0;

for (j = 0; j < N-1; j++)

{


int temp2 = result;


if (arr3[i][j] > 1 || arr3[i][j] < -1) // 1초과 -1 미만 경우

{

result--;

}


if (arr3[i][j] == 0) // 0인 경우

{

count++;

}


if (arr3[i][j] == 1) // 1인 경우

{

if (count < (L - 1))

result--;


count = 0;

}


if (arr3[i][j] == -1) // -1인 경우

{

if ((L == 1) && (arr3[i][j + 1] == 1))

{

result--;

}


for (int k = j + 1; k < (L - 1) + j + 1; k++)

{

if (arr3[i][k] != 0)

{

result--;

k = (L - 1) + j + 1;

}

}


if(arr3[i][(L-1)+j+1]==0)

j = (L - 1) + j + 1 ;

else

j = (L - 1) + j + 1 - 1;

count = 0;

}


if (temp2 != result)

j = N - 1;

}

}

print_info();

return 0;

}


'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ 15683] 감시  (0) 2018.08.24
[BOJ 9466] 텀 프로젝트  (0) 2018.08.05
[BOJ 14503] 로봇청소기  (0) 2018.08.02
[BOJ 14500] 테트로미노  (0) 2018.08.02
[BOJ 13458] 시험감독  (0) 2018.08.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함