문제 링크
난이도 : Lv. 0

문제 내용

정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.

입력

[3, 4, 5, 2, 1]

출력

393

문제 분석

for문으로 돌면서 홀수/짝수 string에 이어붙인 뒤에, stoi로 숫자로 바꿔서 더하기

작성한 코드

#include <string>
#include <vector>
 
using namespace std;
 
int solution(vector<int> num_list) {
    int answer = 0;
    string odd = "";
    string even = "";
    for (int num : num_list) {
        if (num%2==0) even += to_string(num);
        else odd += to_string(num);
    }
    answer = stoi(odd) + stoi(even);
    return answer;
}

우수 코드 분석

#include <string>
#include <vector>
using namespace std;
 
int solution(vector<int> v) {
    string odd = "", even = "";
    for(const int& i : v)
        i&1 ? odd += to_string(i) : even += to_string(i);
    return stoi(odd) + stoi(even);
}

& 사용해서 참조로 접근하면 빠름

i&1 하면 비트연산 하게 되니까 0000 0001 이랑 and 함 ⇒ 홀수면 true, 짝수면 false ⇒ 그래서 삼항연산으로 사용함