[C++] BOJ 9440번: 숫자 더하기

ㅎㅎ·2023년 9월 14일
0

BOJ

목록 보기
55/65

BOJ 9440번: 숫자 더하기

문제


문제 풀이

오름차순 정렬하고 앞에서부터(작은 수부터) 번갈아 양쪽에 넣어주기
0은 맨 앞으로 가면 안 됨

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int arr[15];

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n, zero, ans;
    string a, b;
    while (true) {
        cin >> n;
        if (n == 0) { return 0; }

        for (int i = 0; i < n; i++) { cin >> arr[i]; }
        sort(arr, arr + n);
        a = ""; b = ""; zero = 0;
        
        // arr의 제일 앞 두 숫자가 0이 아니게 바꾸기
        for (int i = 0; i < n; i++) { if (arr[i] == 0) { zero++; } }
        if (zero == 1) { swap(arr[0], arr[2]); }
        else if (zero > 1) {
            swap(arr[0], arr[zero]);
            swap(arr[1], arr[zero + 1]);
        }

        for (int i = 0; i < n; i++) { // a, b 하나씩 양쪽으로
            if (i % 2 == 0) { a += to_string(arr[i]); }
            else { b += to_string(arr[i]); }
        }
        ans = stoi(a) + stoi(b);
        cout << ans << '\n';
    }

    return 0;
}

swap() 함수를 새로 알았다 temp 안 써도 되고 아주 좋군

profile
Backend

0개의 댓글