반응형
문자열 재정렬
난이도 ●○○ | 풀이 시간 20분 | 시간 제한 1초 | 메모리 제한 128MB | 기출 Facebook 인터뷰
알파벳 대문자와 숫자(0 ~ 9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출련한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다.
예를 들어 K1KA5CB7이라는 값이 들어오면 ABCKK13을 출력합니다.
입력 조건
- 첫째 줄에 하나의 문자열 S가 주어집니다. (1 <= S의 길이 <= 10,000)
출력 조건
- 첫째 줄에 문제에서 요구하는 정답을 출력합니다.
입력/출력 예시
입력 예시 | 출력 예시 |
K1KA5CB7 | ABCKK13 |
AJKDLSI412K4JSJ9D | ADDIJJJKKLSS20 |
요점
- 문자열과 숫자를 구분한다.
- 숫자는 정렬하고 문자는 더 한다. 이때 숫자가 없을 경우도 고려해야한다.
소스 코드
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
String num = str.replaceAll("[^0-9]", "");
char alpha[] = str.replaceAll("[^A-Z]", "").toCharArray();
Arrays.sort(alpha);
int sum = 0;
for(char c : num.toCharArray()){
sum += c - '0';
}
String sortedAlpha = new String(alpha);
String addedNum = (sum == 0 ? "" : String.valueOf(sum));
System.out.println("result = " + sortedAlpha + sum);
}
}
문제 풀이 후기
문자열과 숫자를 구분하는 과정은 정규식을 사용하였다. 복잡하지는 않은 문제였다. 코딩 테스트에 다 이런 문제만 나오면 좋겠다.
참고서적 : 이것이 취업을 위한 코딩 테스트다 with 파이썬 by 나동빈
반응형