136.文字列の再配置



  • 入力文字列は、大文字と数字(0~9)で構成されます.
  • すべてのアルファベットを昇順に並べ、出力し、すべての数値の値を出力し続けます.

  • 入力条件
    1行目の
  • には、Sという文字列があります.(1≦S長≦10000)

  • しゅつりょくじょうけん
    第1行
  • において、質問要求の正解が出力される.
  • 1.実施

    
    data = input()
    
    result = []
    value = 0
    
    for x in data:
      #알파벳인 경우 결과 리스트에 삽입
      if x.isalpha():
        result.append(x)
      #숫자는 따로 더하기
      else:
        value += int(x)
    
    result.sort()
    
    if value != 0:
      result.append(str(value))
    
    print(''.join(result))
    

    2.C++コード

    
    #include <bits/stdc++.h>
    
    using namespace std;
    
    string str;
    vector<char> result;
    int value = 0;
    
    int main(void) {
        cin >> str;
    
        // 문자를 하나씩 확인하며
        for (int i = 0; i < str.size(); i++) {
            // 알파벳인 경우 결과 리스트에 삽입
            if (isalpha(str[i])) {
                result.push_back(str[i]);
            }
            // 숫자는 따로 더하기
            else {
                value += str[i] - '0';
            }
        }
    
        // 알파벳을 오름차순으로 정렬
        sort(result.begin(), result.end());
    
        // 알파벳을 차례대로 출력
        for (int i = 0; i < result.size(); i++) {
            cout << result[i];
        }
    
        // 숫자가 하나라도 존재하는 경우 가장 뒤에 출력
        if (value != 0) cout << value;
        cout << '\n';
    }