안녕하세요. 오늘은 수를 바꿀 거예요.

문제

https://www.acmicpc.net/problem/31409

아이디어

a_i가 i만 아니면 됩니다. 그러므로 a_i가 i인것의 개수를 세고 다 바꿔주면 됩니다.

소스코드

#include <iostream>
#define ll long long
using namespace std;


int main(void)
{
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	ll N, i, arr[101010] = { 0 }, cnt = 0;

	cin >> N;
	for (i = 1; i <= N; i++)
	{
		cin >> arr[i];
		if (arr[i] == i)
		{
			if (i == 1) arr[i] = N;
			else arr[i] = 1;
			cnt++;
		}
	}

	cout << cnt << "\n";
	for (i = 1; i <= N; i++)
		cout << arr[i] << ' ';
}


감사합니다.

0개의 댓글