문자열 & 문자 다루기

최병현·2025년 12월 1일

java

목록 보기
1/38
post-thumbnail

1. 오늘 배운 내용

• 문자열 처리 기본 (charAt, length)
• 문자 범위 비교 ('a' <= char <= 'z')
• 숫자 추출 (Character.isDigit)
• indexOf()로 문자 존재 여부 판단
• 배열 + 문자열 조합으로 문자 빈도수 세기
• ASCII 기반 문자 ↔ 숫자 변환
• (char)(j + 'a') 공식 이해
• 문자열 필터링 / 누적 로직

2. 오늘 연습했던 문제

✅ 문자열을 입력받아서 그 안에 있는 숫자(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]);
			}

3. 어려웠던 점

• 'a'가 실제로는 숫자 97이라는 점이 처음엔 이해 안 됨
• 왜 text - 'a'가 0~25가 되는지 감이 안 왔음
• (char)(j + 'a')에서 (char) 형변환이 꼭 필요한 이유가 헷갈렸음
• count 배열에서 왜 특정 인덱스만 증가하는지 혼란스러웠음
• 배열과 문자열을 같이 사용하려니 뇌정지가 왔음

4. 해결과 깨달음

• 문자도 결국 숫자라는 걸 받아들이니 모든 식이 이해되기 시작함
• 문자 빈도수 문제는 “문자를 번호로 매핑하는 문제”라는 걸 깨달음
• 어려운 문제도 한 줄씩 쪼개서 보면 결국 단순한 반복과 조건이라는 걸 느낌
• 시간이 좀 걸려도 계속 보다 보니 이해가 된다 → “하면 된다, 안 되는 건 없다”

5. 내일 목표

• 문자열 심화: substring, replace, split 연습
• 배열 + 문자열 조합 문제 더 풀어보기
• 대소문자 통합 처리(대문자/소문자 같이 다루기) 연습
• 문자열 문제 풀면서 오늘 내용 복습

6. 느낀점

오늘은 문자와 ASCII 때문에 뇌정지가 와서 머리가 아팠지만,
직접 손으로 그려보고 실제로 코드를 입력하고 디버깅하면서 하나씩 이해할 수 있었다.

완전히 감이 잡힌 건 아니지만,
조금씩 연결되고 있다는 느낌이 든다.

내일은 문자열 심화와 배열 + 문자열 조합 문제를 풀면서
한 단계 더 올라가 보자!

profile
Develop

0개의 댓글