아래 mystery.c는 입력파일 X를 읽어서 그 안에 기록된 N 개의 정수를 배열 NUM에 저장한 뒤에 이 N 개의 숫자를 어떤 순서에 따라서 화면에 출 력하는 프로그램이다. mystery.c가 X를 입력으로 받아 화면에 출력한 결과를 Y라고 하자.
mystery.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <stdio.h> int NUM[101] ; FILE *fin ; int main(){ int i, token,N ; int count=0, from= 0, value ; fin = fopen ( "X" , "r" ); fscanf (fin, "%d" ,&N); for (i=0; i < N; i++){ fscanf (fin, "%d" ,&token); NUM[i]= token; } /* end of for */ printf ( "%d\n" , N ) ; value = NUM[ from ] ; while ( count < N ) { while ( value == 0 ) { from = (from+1)%N; value = NUM[ from ] ; } /* end of inner while */ printf ( "%d " , value ) ; count++ ; NUM[ from ] = 0 ; from = (value +from )% N ; value = NUM[ from ] ; } /* end of outer while */ return (0); } /* end of main */ |
수행 시간은 1초를 넘을 수 없다.
입력 5 1 2 4 3 5 출력 5 1 2 3 4 5 입력 10 1 2 4 8 6 3 7 5 10 9 출력 10 1 2 3 4 5 6 7 8 9 10 입력 10 5 5 7 4 33 10 9 3 2 6 출력 10 5 7 33 2 6 5 10 9 4 3
출처:koi 30 회(2013 8 2) 전국 본선 중등부 문제 2/4대회 풀이