[10038] Jolly Jumpers








Problem Link : http://acm.uva.es/p/v100/10038.html

■ Problem
n개의 데이터를 입력받고 데이터 각각의 차의 집합이 1 ~ n-1집합과 같으면 졸리출력

■ Solution
check[] 변수를 만들어서 check[데이터 각각의 차] = 1 이렇게 체크를 한다.
나중에 check[] 확인해서 1 ~ n-1까지 다 체크되어있으면   졸리다.

■ Critical Input
문제마다 크리티칼 오류를 만드는 구만.. 그것도.. 쉬운거로…
scanf ( “%d”, &input[loop] ) 여기서… & 요거 빼먹어서… 계속 이상한 오류…. 개삽질













[ Source Code ]

#include <stdio.h>
#include <stdlib.h>

#define NOT_JOLLY 1
#define JOLLY 2

int IsJolly ( const int *, int );

int main ( void )
{

int input[3000], check[3000];
int num, loop, result;
char c;

while ( scanf ( %d, &num ) != EOF ) {
// 루프를 돌면서 인풋을 받음
for ( loop = 0 ; loop < num ; loop++ ) {
check[loop] = 0;
scanf ( %d, &input[loop] );

}
fflush ( stdin );

// i, i+1 항과의 차를 구해서 결과를 저장
for ( loop = 1 ; loop < num ; loop++ ) {
result = input[loop] – input[loop-1];
// 절대값 처리.. 음수명 -1 곱하기 쿠쿠
if ( result < 0 ) {
result *= –1;
}

// check변수에 나온결과 체크함.
if ( result > 0 && result < num ) {
check[result] = 1;
}
}

// 결과에 따라 출력하는 부분
if ( IsJolly ( check, num ) == JOLLY ) {
printf ( “Jolly\n );
}
else {
printf ( “Not jolly\n );
}
}

return 0;
}

int IsJolly ( const int *check, int num )
{

int loop;

for ( loop = 1 ; loop < num ; loop++ ) {
if ( check[loop] != 1 ) {
return NOT_JOLLY;
}
}

return JOLLY;

}


댓글 남기기