Koder / 박성훈
article thumbnail

www.acmicpc.net/problem/20309

 

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;
} 

 

반응형