문제 링크 : https://www.acmicpc.net/problem/9440
이 문제 쉽지않았다...
생각할것도 많았고 고려해야할 것도 많았다.
오늘 하루종일 (학교를 갔다오긴했지만) 생각해봤지만 도저히 풀리지 않아서 구글링했는데,
정말 잘설명해놓은 블로그가 있어서 그곳 도움을 받았다. 물론 설명만 거기서 보고 코드는 내가짰다.
설명 블로그 : https://technicolour.tistory.com/20 (정말 도움이 많이됐습니다!)
code
#include <stdio.h> #include <math.h> void BubbleSort(int arr[], int num) { int i, j, temp; for(i=num-1;i>=0;i--) for (j = 0; j < i; j++) if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } int main() { int N=1, i; while (1) { int a = 0, b = 0, zero_cnt = 0, temp; int num[14] = { 0 }; scanf("%d", &N); if (N == 0) break; for (i = 0; i < N; i++) { scanf("%d", &num[i]); if (num[i] == 0) zero_cnt++; } BubbleSort(num, N); for (i = 0; i < 2; i++) if (num[i] == 0) { temp = num[i]; num[i] = num[zero_cnt + i]; num[zero_cnt + i] = temp; } int index = N / 2 - 1; if (N % 2 == 0) { for (i = 0; i < N; i++) { if (i % 2 == 0) a += num[i] * pow(10, index); else { b += num[i] * pow(10, index); index--; } } } else { for (i = 0; i < N; i++) { if (i % 2 == 0) a += num[i] * pow(10, index+1); else { b += num[i] * pow(10, index); index--; } } } printf("%d\n", a + b); } return 0; }
내가 참고한 블로그에 가면 정말 친절하게 설명이 잘되어있다.