문자열은 정렬, 숫자는 합하기 - List<Character>, Collections.sort(), StringBuilder
🧩 문제 9
문자열을 입력받아,
알파벳은 오름차순(사전 순)으로 정렬하고,
숫자는 모두 더해서 합계를 계산한 다음,
최종적으로 "정렬된 알파벳 + 숫자 합계" 형태로 출력하는 프로그램을 작성하시오.
✨ 예시
입력: "K1KA5CB7"
처리 과정:
알파벳: K, K, A, C, B → A B C K K (오름차순 정렬)
숫자: 1, 5, 7 → 합계 13
출력 결과:
ABCKK13
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("입력: ");
String input = sc.nextLine();
List<Character> letters = new ArrayList<>(); // 알파벳 저장용
int sum = 0; // 숫자 합계
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (Character.isLetter(c)) {
letters.add(c); // 알파벳이면 리스트에 추가
} else if (Character.isDigit(c)) {
sum += Character.getNumericValue(c); // 숫자면 합계에 더하기
}
}
Collections.sort(letters); // 알파벳 오름차순 정렬
StringBuilder result = new StringBuilder();
for (char ch : letters) {
result.append(ch);
}
result.append(sum); // 알파벳 다 출력한 후에 숫자 합계 붙이기
System.out.println(result.toString()); // 최종 결과 출력
}
}
1. List는 "자료구조(컬렉션)" 야.
여러 개의 데이터를 "순서대로 저장"하는 컨테이너야.
그래서 새로운 데이터를 넣을 때는
add(추가)
라는 의미의 메서드를 써.
List<String> list = new ArrayList<>();
list.add("apple"); // 리스트에 "apple"을 추가
list.add("banana"); // 리스트에 "banana"를 추가
List<String> list = new ArrayList<>(); list.add("apple"); // 리스트에 "apple"을 추가 list.add("banana"); // 리스트에 "banana"를 추가
add
= "새로운 항목을 리스트에 추가한다"
2. StringBuilder는 "문자열 조립기" 야.
문자열을 빠르게 이어붙이는 도구야.
그래서 새로운 문자열이나 문자를 이어붙일 때
append(붙인다)
라는 메서드를 써.
StringBuilder sb = new StringBuilder();
sb.append("apple"); // 문자열 끝에 "apple" 추가
sb.append("banana"); // 문자열 끝에 "banana" 추가
✨ 쉽게 비유하면
List
StringBuilder
가방에 물건을 하나씩 넣는다 → add | 종이에 글자를 하나씩 이어서 쓴다 → append |
List.add(값) → 가방에 물건 추가
StringBuilder.append(값) → 문장에 글자 추가
✅ 정리
목적
사용 메서드
설명
데이터를 모아서 저장할 때 (List) |
| 항목을 리스트에 추가 |
문자열을 빠르게 이어서 붙일 때 (StringBuilder) |
| 문자열을 뒤에 덧붙임 |
📢 참고
List
는 다양한 자료형(String
,Integer
,Character
, 등등)을 담을 수 있어.StringBuilder
는 오로지 문자열을 빠르게 조립하는 데 특화돼 있어.