- ์ด ๋ฌธ์ ๋ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
#include <iostream>
#include <cmath>
using namespace std;
// ๊ฒฝ์ฌ๋ก ๋๋์ง ํ์ธํ๋ ํจ์
bool find_load(int data[],int n,int l){
int s=data[0]; // ๊ฐ์ฅ ์ ์์
int cnt=1; // ๊ฐ์ฅ ์ ์์๋ ๊ฐ์ ์ ์ฒดํฌํ๊ธฐ ์ํ count, ์ฒ์ ์์์ 1
for(int i=1;i<n;i++){
if(s==data[i]){ // ๊ฐ์ผ๋ฉด +1
cnt++;
}
else if(abs(s-data[i])>=2){ // ๊ฒฝ์ฌ ์ฐจ์ด๊ฐ +2, -2์ด์์ด๋ฉด ์ข
๋ฃ
return false;
}
else if(s-data[i]==1){ // ๊ฒฝ์ฌ๊ฐ ๋ฎ์์ง ๊ฒฝ์ฐ : l๋งํผ์ ๊ฒฝ์ฌ๊ธธ์ด๊ฐ ์กด์ฌํด์ผ ํ๋ค
bool find=true;
for(int j=i;j<i+l;j++){
if(data[i]!=data[j]){ // ๊ฒฝ์ฌ๊ฐ l๋งํผ ํ์ธํ๋ ๋์ ๋ฌ๋ผ์ง ๊ฒฝ์ฐ ์ข
๋ฃ
return false;
}
}
if(find){ // l๋งํผ ๊ธธ์ด ๋ชจ๋ ๊ฐ์ ๊ฒฝ์ฐ
i+=l-1; // ์ธ๋ฑ์ค๋ ๋ง์ง๋ง์ ํด๋นํ๋ ์ซ์. => ex) l=2์ผ๊ฒฝ์ฐ 3 2 1 ์ด๋ฉด 1์ ํด๋นํ๋ ์ธ๋ฑ์ค
if(i<n){ // ๋ง์ง๋ง ์ธ๋ฑ์ค์ ํด๋นํ๋ ์์
s=data[i];
cnt=0; // cnt=0์ด์ฌ์ผ ํ๋๋ฐ ์ด์ ๋ 3 3 2 2 3 3 ์ด๋ด๊ฒฝ์ฐ 2 2๋ฅผ ๋ชจ๋ ํ ๊ฒฝ์ฌ๋ก๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋ค์๋ ๋ชป๋ค์ด๊ฐ
}
}
}
else{ // ๊ฒฝ์ฌ๊ฐ ๋์ ๊ฒฝ์ฐ : cnt๋ก ๊ทธ ์ ๊ฒฝ์ฌ์ ๊ธธ์ด ์ฒดํฌํ๊ณ ์์์
if(cnt>=l){ // l๋ณด๋ค ์งง์ ๊ฒฝ์ฐ๋ผ๋ฉด ์ข
๋ฃ, ๊ทธ๋ ๋ค๋ฉด ํ์ฌ ๋์์ง ๊ฒฝ์ฌ ๋ฐ์ดํฐ ํ๋
s=data[i];
cnt=1;
}
else{
return false;
}
}
}
return true;
}
int main(){
int answer=0;
int n,l;
cin>>n>>l;
int arr[100][100];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>arr[i][j];
}
}
// ๊ฐ๋ก ๊ฒฝ์ฌ๋ก ํ์ธ
for(int i=0;i<n;i++){
int data[100];
for(int j=0;j<n;j++){
data[j]=arr[i][j];
}
bool check=find_load(data,n,l);
if(check){
answer++;
}
}
// ์ธ๋ก ๊ฒฝ์ฌ๋ก ํ์ธ
for(int j=0;j<n;j++){
int data[100];
for(int i=0;i<n;i++){
data[i]=arr[i][j];
}
bool check=find_load(data,n,l);
if(check){
answer++;
}
}
cout<<answer;
}
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.