아래로 내려가면서 N극을 이전에 만나고 S극을 만나면 교착상태가 +1이 됩니다. → flagN으로 체크
단, S극이 연속이라면 하나의 교착상태이기 때문에 교착상태가 증가하지 않습니다. → prev로 체크
#include <iostream>
using namespace std;
int length;
int map[100][100];
/*
1: N극, 2: S극
윗 부분 N극, 아랫 부분: S극
*/
int getResult() {
int result = 0;
for(int x=0; x<length; x++) {
bool flagN = false;
int prev = 0;
for(int y=0; y<length; y++) {
switch(map[y][x]) {
case 0: //빈공간
break;
case 1: //N
flagN = true;
prev = 1;
break;
case 2: //S
if(prev != 2 && flagN) {
result++;
}
prev = 2;
break;
}
}
}
return result;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
for(int tc=1; tc<=10; tc++) {
cin >> length;
for(int y=0; y<length; y++) {
for(int x=0; x<length; x++) {
cin >> map[y][x];
}
}
cout << '#' << tc << ' ' << getResult() << '\n';
}
return 0;
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 7087. 문제 제목 붙이기 (0) | 2020.03.19 |
---|---|
[SWEA] 8673. 코딩 토너먼트1 (0) | 2020.03.17 |
[SWEA] 9317. 석찬이의 받아쓰기 (0) | 2020.02.20 |
[SWEA] 8457. 알 덴테 스파게티 (0) | 2020.02.17 |
[SWEA] 8888. 시험 (0) | 2020.02.16 |
댓글