#include <stdio.h>
int num[100]={0};
int answer[100]={0};
int number(int n); //뽑을 정수 찾기
int search(int a); //판단
void pr(int r); //출력
int main(void)
{
int n, i, r;
scanf(" %d", &n); //정수의 개수
for(i=0;i<n; i++)
scanf(" %d", &num[i]);
r=number(n);
pr(r);
return 0;
}
int number(int n)
{
int i, j, r=0;
for(i=1; i<=n; i++)
{
if(num[num[i-1]-1]==i || search(i)==1) //뽑는 수인가?
answer[r++]=i;
}
return r;
}
int search(int a)
{
int i, m[100]={0};
m[a-1]++;
i=num[a-1];
while(1)
{
if(num[i-1]==a) //이 수를 뽑았을 때 두 집합이 일치하는가?
return 1;
else if(m[i-1]>0) //일치 하지 않는가?
return 0;
m[i-1]++;
i=num[i-1];
}
}
void pr(int r)
{
int i;
printf("%d\n", r);
for(i=0; i<r; i++)
printf("%d\n", answer[i]);
}
2018.01.27 10:26
정올 - 실력키우기 - 숫자고르기(1459)
조회 수 796 추천 수 0 댓글 0