20309번: 트리플 소트
$N$은 $3, 4, 5$ 중 하나이다.
www.acmicpc.net
생각의 전환
이 문제를 풀기위해서 반드시 사고해야할 점은 "세개를 동시에 뒤집는 것" 이 무엇을 의미하는지 알아야한다
세개를 동시에 뒤집게 되면
세개 중 가운데에 있는 수는 항상 제자리에 있게 되고,
결과적으로 보자면 i 번째 수를 i+2번과 바꾸는것과 같게 되어서
홀수자리는 홀수자리끼리만 / 짝수자리는 짝수자리끼리만 바꿀수 있게 됩니다.
따라서 홀수자리에 짝수가 나온다면 절대 바꿀수 없으므로 NO, 아니면 YES를 출력하게 짜주면 됩니다.
#include <stdio.h>
int arr[345678] = {0};
int main(){
int n;
bool ans = true;
scanf("%d", &n);
for(int i=0; i<n; i++) scanf("%d", &arr[i]);
for(int i=0; i<n; i++) if(i%2 == arr[i]%2) ans = false;
printf("%s", ans?"YES":"NO");
return 0;
}
반응형