현민이와 정우 서로 다른 미로에 갇힘
미로는 갈림길이 없지만, 현민이와 정우는 멍청하기 떄문에 탈출하지 못함
범수 서쪽 남쪽
현민 정우 범수 시킨 대로
미로의 끝점에 서게 되면 미로를 탈출하게 됨
미로는 북 동 남 서의 수열로 표현됨
북북동으로 가야 끝점에 도달하게 됨
만약 엔엔이로 미로에서 출발했을 떄 범수가
#include <stdio.h>
#define MAXN (10000)
int N;
char pa[MAXN + 2], pb[MAXN + 2];
int main(void)
{
freopen("test.txt", "r", stdin);
int test_case;
int T;
/* 아래 코드를 수행하지 않으면 여러분의 프로그램이 제한 시간 초과로 강제 종료 되었을 때,
출력한 내용이 실제 표준 출력에 기록되지 않을 수 있습니다.
따라서 안전을 위해 반드시 setbuf(stdout, NULL); 을 수행하시기 바랍니다.
*/
setbuf(stdout, NULL);
scanf("%d", &T);
/*
여러 개의 테스트 케이스를 처리하기 위한 부분입니다.
*/
for (test_case = 1; test_case <= T; ++test_case)
{
int ans = 0;
scanf("%d", &N);
scanf("%s", pa);
scanf("%s", pb);
if (pa[N - 1] == pb[N - 1]) {
ans = 1;
}
else {
switch (pa[N - 1]) {
case 'E':
ans = (pb[N - 1] == 'S') ? 1 : (pb[N - 1] == 'N') ? 1 : 0;
break;
case 'W':
ans = (pb[N - 1] == 'S') ? 1 : (pb[N - 1] == 'N') ? 1 : 0;
break;
case 'S':
ans = (pb[N - 1] == 'E') ? 1 : (pb[N - 1] == 'W') ? 1 : 0;
break;
case 'N':
ans = (pb[N - 1] == 'E') ? 1 : (pb[N - 1] == 'W') ? 1 : 0;
break;
}
if (1 == ans && N >= 2) {
if ((pa[N - 1] == 'W' && pb[N - 2] == 'E') || (pa[N - 1] == 'E' && pb[N - 2] == 'W')) {
if ((pa[N - 2] == 'S' && pb[N - 1] == 'N') || (pa[N - 2] == 'N' && pb[N - 1] == 'S')) {
ans = 0;
}
}
if ((pa[N - 1] == 'S' && pb[N - 2] == 'N') || (pa[N - 1] == 'N' && pb[N - 2] == 'S')) {
if ((pa[N - 2] == 'W' && pb[N - 1] == 'E') || (pa[N - 2] == 'E' && pb[N - 1] == 'W')) {
ans = 0;
}
}
}
}
printf("#%d %s\n", test_case, ans >= 1 ? "YES" : "NO");
}
return 0; //정상종료시 반드시 0을 리턴해야 합니다.
}
- 오케이
- 이렇게 이렇게 모든 루트에 대해서 경우의 수를 나누어서 적용함
- 경우의 수 찾는 것이 일
- ? : 이렇게 다음으로 넘어가서 바로 ? : 이것을 바로 또 사용하기 가능함
'Algorithms > simulation' 카테고리의 다른 글
온라인 팰린드롬 (0) | 2018.11.14 |
---|---|
온라인 지구 온난화 (0) | 2018.11.14 |
2-1 조 구성하기 (0) | 2018.11.14 |
6-1 단어가 등장하는 횟수 (0) | 2018.11.12 |
2-3 괄호 (0) | 2018.11.12 |
댓글