Programming/[BAEKJOON] acmicpc

1026번 보물 풀이

fkillrra 2018. 1. 3. 06:03

1026번 보물 풀이 시작합니다.



문제는 이러합니다.


이 문제의 정답 비율이 60%가 넘는다는 사실을 잊고 너무 어렵게 생각을 해서..시간을 낭비했습니다ㅠ


[힌트]

중요한건 어렵게 생각하지 않는것인것 같습니다. ㅎ


문제의 요지는 단순하게 A를 재배열하고, B를 재배열하면 안됩니다.


이 문제에서는 단순히 입력을 받는 B배열을 재배열하면 틀리게끔 해놓은것 같습니다.


그렇다면 정말 단순하지만 B의 배열에 있는 원소를 고대로! 다른 배열을 만들어 그 배열에 똑같이 넣어주고 정렬하면 되겠죠?


정렬은 A배열은 작은수 순서대로, B는 큰수 순서대로 정렬해주면 문제가 요구한 정답이 나오게됩니다.


네 그러면 됩니다. ㅎ


풀이 공개합니다.


[풀이 소스코드]


#include <stdio.h>


int main()

{

int input,i,j,tmp,total;

scanf("%d",&input);

int a[input],b[input],result[input],b2[input];

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

{

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

}

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

{

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

{

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

{

tmp = a[j];

a[j] = a[j+1];

a[j+1] = tmp;

}

}

}

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

{

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

}

for(i = 0; i < input; i++) b2[i] = b[i];

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

{

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

{

if(b2[j] < b2[j+1])

{

tmp = b2[j];

b2[j] = b2[j+1];

b2[j+1] = tmp;

}

}

}

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

{

result[i] = a[i] * b2[i];

total += result[i];

}

printf("%d",total);

return 0;

}

저는 코드를 최적화하는것보다 풀이하는데 집중했습니다. (코드가 긴거에 대한 변명)


이렇게 제출하게 되면..!



정답이라고 채점이 됩니다.


이상입니다.


반응형