136. 문자열 재정렬

아현·2021년 7월 6일
0

Algorithm

목록 보기
137/400
  • 알파벳 대문자와 숫자 (0 ~ 9)로만 구성된 문자열이 입력으로 주어집니다.

    • 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다.

  • 입력조건

    • 첫째 줄에 하나의 문자열 S가 주어집니다. (1 ≤ S의 길이 ≤ 10,000)

  • 출력조건

    • 첫째 줄에 문제에서 요구하는 정답을 출력합니다.

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';
}

profile
For the sake of someone who studies computer science

0개의 댓글