본문으로 건너뛰기
자료구조 · 알고리즘 기초집LESSON 04

문자열과 문자 배열: 텍스트 데이터를 효율적으로 다루기

난이도초급 → 중급 입문
예상 시간40분
선수지식이전 강의

04강. 문자열과 문자 배열: 텍스트 데이터를 효율적으로 다루기

1. 이번 강의에서 해결할 문제

플레이어 ID를 반복해서 이어 붙이거나 한 글자씩 수정할 때 String을 계속 새로 만들면 코드와 비용을 이해하기 어려워집니다.

2. 학습 목표

3. 핵심 개념

String은 생성 후 내용이 바뀌지 않는 불변 객체입니다. charAt은 UTF-16 코드 단위를 반환하므로 모든 사용자 인식 문자가 char 하나라는 뜻은 아닙니다. 영문·숫자 ID처럼 제한된 규칙에서는 char 순회가 단순합니다. 반복 연결은 새 문자열을 만들 수 있으므로 여러 조각을 모을 때는 StringBuilder를 사용합니다. 검사와 변환이 한 번의 길이 n 순회라면 O(n) 시간입니다.

4. 단계별 실습

1. 예제 파일 작성

실행 환경: 코드 편집기

실행 위치: C:\dev\game-ranking-algorithms

실행 전 확인: 같은 이름의 파일이 있다면 덮어쓰기 전에 Git diff로 변경 범위를 확인합니다. 선택한 LTS JDK의 java -versionjavac -version이 모두 실행되어야 합니다.

대상 파일: src/PlayerIdNormalizer.java

src/PlayerIdNormalizer.java
public class PlayerIdNormalizer {
static String normalize(String raw) {
if (raw == null || raw.isBlank()) throw new IllegalArgumentException("빈 ID");
StringBuilder result = new StringBuilder(raw.length());
for (int i = 0; i < raw.length(); i++) {
char ch = raw.charAt(i);
if (Character.isLetterOrDigit(ch)) result.append(Character.toUpperCase(ch));
}
if (result.length() == 0) throw new IllegalArgumentException("영문 또는 숫자가 필요합니다");
return result.toString();
}

public static void main(String[] args) {
System.out.println(normalize(" player-01 "));
}
}

2. PowerShell에서 컴파일·실행

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-ranking-algorithms

실행 전 확인: src/PlayerIdNormalizer.java가 저장되었고 out 폴더에는 삭제해도 되는 컴파일 결과만 있는지 확인합니다.

대상: src/PlayerIdNormalizer.javaout 아래 생성되는 class 파일

Windows PowerShell
Set-Location C:\dev\game-ranking-algorithms
New-Item -ItemType Directory -Force .\out | Out-Null
javac -Xlint:all -d .\out .\src\PlayerIdNormalizer.java
java -cp .\out PlayerIdNormalizer

예상 결과: 공백과 하이픈이 제거되고 대문자로 바뀐 PLAYER01이 출력됩니다.

실행 시간은 PC의 CPU·메모리, JDK 버전, JVM 워밍업, 백그라운드 작업과 입력 분포에 따라 달라질 수 있습니다. 측정값은 같은 조건에서 여러 번 비교하고 Big-O 분석과 함께 해석합니다.

5. 코드와 알고리즘이 동작하는 이유

입력을 왼쪽에서 오른쪽으로 한 번만 읽고 허용 문자만 builder에 추가합니다. 시간은 O(n), 결과 저장 공간은 O(n)입니다. 불변 String을 루프마다 +로 갱신하는 대신 하나의 가변 버퍼를 사용해 의도를 분명히 합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

문자열과 문자 배열: 텍스트 데이터를 효율적으로 다루기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“문자열과 문자 배열: 텍스트 데이터를 효율적으로 다루기”에서 오류나 데이터 손실을 줄이는 선택은 무엇인가요?
  2. 문제 2“문자열과 문자 배열: 텍스트 데이터를 효율적으로 다루기”에서 ‘문자열 내용을 ==로 비교하기’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

04강. 문자열과 문자 배열: 텍스트 데이터를 효율적으로 다루기 미완료 상태