문자열은 정렬, 숫자는 합하기 - List<Character>, Collections.sort(), StringBuilder

Java기초
Java기초
avatar
2025.04.27
·
4 min read

🧩 문제 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)

add()

항목을 리스트에 추가

문자열을 빠르게 이어서 붙일 때 (StringBuilder)

append()

문자열을 뒤에 덧붙임


📢 참고

  • List는 다양한 자료형(String, Integer, Character, 등등)을 담을 수 있어.

  • StringBuilder는 오로지 문자열을 빠르게 조립하는 데 특화돼 있어.