[백준/BOJ] 9440. 숫자 더하기 [Silver 4]

jychan99·2021년 10월 5일
0
post-thumbnail
  1. 숫자 더하기

문제 링크 : 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;
}

내가 참고한 블로그에 가면 정말 친절하게 설명이 잘되어있다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글