#025 이어 붙인 수

Hyejin Kim·2023년 5월 5일
0

문제

정수가 담긴 리스트 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;

출처

코딩테스트

profile
Hello. I am a developer who is still developing.

0개의 댓글