250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(SWEA c++)1220. [S/W 문제해결 기본] 5일차 - Magnetic 본문
728x90
반응형
배열의 맨 밑에서부터 검사를 한다.
행 단위로 움직이도록 한다.
(바깥 for문 = j, 안쪽 for문 = i)
bool형 n, s를 이용해 교착 상태를 확인한다.
arr[i][j] == 1이면 N극, 2이면 S극이므로
각각의 상태를 확인한다.
N극인 경우)
1)n과 s가 false인 경우 테이블 밖으로 떨어진다.
2)n == true && s == false인 경우 자성체가 붙어있지만 N극인 경우이므로 continue
3)n == false && s == true인 경우 S극 자성체가 있어 교착상태이므로 ans++, n, s를 모두 false로 바꿔준다.
S극인 경우)
1)n == false, s == false인 경우 n,s 자성체가 발견되지 않으므로 s = true
2)s == true && n == false인 경우 s극끼리 붙어있으므로 continue
3)s == false && n == true인 경우 교착상태이므로 ans++, n, s를 모두 false로 바꿔준다.
#include <iostream>
using namespace std;
int arr[100][100];
int main(void)
{
for(int t = 1; t <= 10; t++)
{
int n, ans = 0;
cin >> n;
for(int i = 0; i < 100; i++)
{
for(int j = 0; j < 100; j++)
cin >> arr[i][j];
}
for(int j = 0; j < 100; j++)
{
bool n = false, s = false;
for(int i = 99; i >= 0; i--)
{
if(arr[i][j] == 1)
{
if((!n && !s) || (n && !s))
continue;
else if(!n && s)
{
ans++;
n = false;
s = false;
}
}
else if(arr[i][j] == 2)
{
if(!n && !s)
s = true;
else if(s && !n)
continue;
else if(!s && n)
{
ans++;
n = false;
s = false;
}
}
}
}
cout << "#" << t << " " << ans << endl;
}
return 0;
}
728x90
반응형
'SW Expert Academy' 카테고리의 다른 글
(SWEA c++)1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (0) | 2020.10.12 |
---|---|
(SWEA c++)1221. [S/W 문제해결 기본] 5일차 - GNS (0) | 2020.10.12 |
(SWEA c++)1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (0) | 2020.10.12 |
(SWEA c++)1216. [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2020.10.08 |
(SWEA c++)1215. [S/W 문제해결 기본] 3일차 - 회문1 (0) | 2020.10.08 |