12-2. 문자열 재정렬

연성·2020년 9월 24일
0

코딩테스트

목록 보기
30/261

1. 문제

알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오른차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다.
예를 들어 K1KA5CB7이라는 값이 들어오면 ABCKK13을 출력합니다.

2. 입력

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

3. 출력

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

4. 풀이

  • 처음에는 문자열을 정렬한 뒤에 숫자를 따로 떼려고 했다.
  • 그러면 문자열에서 숫자를 없애줘야 하고 귀찮았다.
  • 그냥 문자와 숫자를 따로 저장하면 되는 거였다.
  • 따로 처리한 후에 to_string을 이용하여 뒤에 붙여 주었는데 문제보니까 그냥 따로 출력하면 되는 거였다.(return을 해야 하면 붙이면 될 것 같다.)

5. 처음 코드와 달라진 점

  • 숫자가 없을 수도 있다는 생각을 못 했다.
  • sum을 0으로 초기화하고 시작해서 숫자가 없으면 자동으로 0이 붙어서 출력된다.
  • 0일 때는 출력 안 하는 걸로 수정했다.

6. 코드

#include <iostream>
#include <algorithm>

using namespace std;

int main(){
	string s, subStr="";
	int sum=0;
	cin>>s;
	
	for(char ch : s){
		if('0'<=ch && ch<='9') sum+= ch-'0';
		else subStr+=ch;
	}
	
	sort(subStr.begin(), subStr.end());
	cout<<subStr;

	if(sum!=0) cout<<sum<<endl;
	
}

0개의 댓글