[이것이 코딩 테스트다] 문자열 재정렬

업데이트:

문제

문제의 저작권은 ‘이것이 코딩테스트다’ 교재에 있습니다.

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

입력

K1KA5CB7

FDSARQWER13579

출력

ABCKK13

ADEFQRRSW25

접근방식

문자열을 입력받아서 배열에 담고 오름차순해준다.
숫자는 따로 합을 구해줘야 하므로 for문으로 돌면서 숫자이면 sum에 담고 문자열이면 최종 출력값인 sb에 append해준다. ‘0’~’9’까지의 아스키코드 범위가 48~57이므로 ‘0’을 뺐을 경우 9이하인지로 숫자인지 문자인지를 구분한다.

import java.io.*;
import java.util.*;

public class Algo0131_2 {
	
	static char[] charArr;
	static StringBuilder sb;
	static int sum;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		sb = new StringBuilder();
		
		charArr = br.readLine().toCharArray();
		
		Arrays.sort(charArr);
		
		for(int i=0; i<charArr.length; i++) {
			if (charArr[i]-'0' <= 9) sum += charArr[i] - '0'; //숫자인지 체크
			else sb.append(charArr[i]);
		}
		
		sb.append(sum);
		System.out.println(sb);

	}
}