tmp/[?] trouble [!]

백준 1037번 약수

fkillrra 2018. 1. 2. 01:02


[풀이를 위한 소스코드 작성]


[소스코드]


#include <stdio.h>


int main(void)

{

int input,i,j,temp,result;

scanf("%d",&input);

int arr[input];

if(input == 0)

return 0;

else if(input == 1)

{

scanf("%d",&input);

printf("%d",input);

}

else if(input >= 2)

{

for(i = 0; i < input; i++)

{

scanf("%d",&arr[i]);

if(arr[i] == 1)

return 0;

}

//배열값 정렬 

for(i = 0; i < input; i++)

{

for(j = 0; j < input - 1; j++)

{

if(arr[j] > arr[j+1])

{

temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

}

}

}

//값을 비교하기 위함 

result = arr[0] * arr[input-1];

for(i = 0; i < input; i++)

{

if((arr[i] * arr[input-1-i]) != result)

return 0;

for(j = i; j < input; j++)

{

if(arr[i] == arr[j+1])

return 0;

}

}

printf("%d",result);

}

return 0;

}



출력결과 일치하는것 같은데 91%에서 틀렸다고 채점이 된다.


[내 생각]

배열값을 정렬한 후, 크던 작던 처음 값(arr[0])과 마지막값(arr[input-1])을 곱하면 내가 구해야하는 result(출력결과)가 나온다.


이때 3 -> 3 3 3 -> 9 가 나오는 결과와

2 -> 1 7 -> 7 이 안나오도록 예외처리를 해준다.


즉 같은 값을 입력하지 못하고 1,7 과 같이 약수가 1과 자기자신(7)만 있는 경우 예외로 return 0; 하여 종료시킨다.


이렇게 하면 되겠지 했는데 안되네용..

반응형