정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.
2 ≤ num_list의 길이 ≤ 10
1 ≤ num_list의 원소 ≤ 9
num_list에는 적어도 한 개씩의 짝수와 홀수가 있습니다.
num_list result
[3, 4, 5, 2, 1] 393
[5, 7, 8, 3] 581
입출력 예 #1
홀수만 이어 붙인 수는 351이고 짝수만 이어 붙인 수는 42입니다. 두 수의 합은 393입니다.
입출력 예 #2
홀수만 이어 붙인 수는 573이고 짝수만 이어 붙인 수는 8입니다. 두 수의 합은 581입니다.
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
// num_list_len은 배열 num_list의 길이입니다.
int solution(int num_list[], size_t num_list_len) {
int odd = 0;
int even = 0;
for (int i = 0; i < num_list_len; i++) {
if (num_list[i] & 1)
odd = odd * 10 + num_list[i];
else
even = even * 10 + num_list[i];
}
return odd + even;
}
odd = odd * 10 + num_list;
이전의 값에 10을 곱해 왼쪽으로 밀고, 일의자리 수로 num_list의 원소를 더해 실제로 숫자가 일렬로 나열되는 효과를 구현하였습니다. 이 코드를 실행한 후에도 여전히 자료형은 정수형이라 숫자로서 연산이 가능합니다.
odd = 35;
num_list = 7;
odd = 35 * 10 + 7 = 357;