• 문자열 처리 기본 (charAt, length)
• 문자 범위 비교 ('a' <= char <= 'z')
• 숫자 추출 (Character.isDigit)
• indexOf()로 문자 존재 여부 판단
• 배열 + 문자열 조합으로 문자 빈도수 세기
• ASCII 기반 문자 ↔ 숫자 변환
• (char)(j + 'a') 공식 이해
• 문자열 필터링 / 누적 로직
✅ 문자열을 입력받아서 그 안에 있는 숫자(0~9)만 골라서 이어 붙여 출력하라.
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
String result = "";
for(int i = 0; i < str.length(); i++) {
char text = str.charAt(i);
if (Character.isDigit(text)) {
result += text;
}
}
System.out.println(result);
}
✅ 문자열을 입력받아서 각 알파벳이 몇 번 등장했는지 세어라.
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
int[] count = new int[26];
for(int i = 0; i < str.length(); i++) {
char text = str.charAt(i);
int index = text - 'a';
count[index]++;
}
for(int j = 0; j < 26; j++) {
if (count[j] > 0) {
System.out.println((char)(j + 'a') + ": " + count[j]);
}
• 'a'가 실제로는 숫자 97이라는 점이 처음엔 이해 안 됨
• 왜 text - 'a'가 0~25가 되는지 감이 안 왔음
• (char)(j + 'a')에서 (char) 형변환이 꼭 필요한 이유가 헷갈렸음
• count 배열에서 왜 특정 인덱스만 증가하는지 혼란스러웠음
• 배열과 문자열을 같이 사용하려니 뇌정지가 왔음
• 문자도 결국 숫자라는 걸 받아들이니 모든 식이 이해되기 시작함
• 문자 빈도수 문제는 “문자를 번호로 매핑하는 문제”라는 걸 깨달음
• 어려운 문제도 한 줄씩 쪼개서 보면 결국 단순한 반복과 조건이라는 걸 느낌
• 시간이 좀 걸려도 계속 보다 보니 이해가 된다 → “하면 된다, 안 되는 건 없다”
• 문자열 심화: substring, replace, split 연습
• 배열 + 문자열 조합 문제 더 풀어보기
• 대소문자 통합 처리(대문자/소문자 같이 다루기) 연습
• 문자열 문제 풀면서 오늘 내용 복습
오늘은 문자와 ASCII 때문에 뇌정지가 와서 머리가 아팠지만,
직접 손으로 그려보고 실제로 코드를 입력하고 디버깅하면서 하나씩 이해할 수 있었다.
완전히 감이 잡힌 건 아니지만,
조금씩 연결되고 있다는 느낌이 든다.
내일은 문자열 심화와 배열 + 문자열 조합 문제를 풀면서
한 단계 더 올라가 보자!