charAt() (+ '문자 → 숫자' 변경도 함께)

드코미·2025년 7월 21일
post-thumbnail

1. charAt() 이란?

charAt(int index)는 문자열(String)에서 특정 인덱스에 위치한 문자(char) 하나를 가져오는 메서드입니다.

String s = "HELLO";
char c = s.charAt(1);  // 'E'
  • 인덱스는 0부터 시작합니다.
  • 반환 타입은 char 입니다.

2. 코테 문제 응용

2-1. 공백 없는 숫자 문자열을 charAt()으로 분해하여 배열에 저장

입력 예시

11111
11122
11121
19111
11111

코드

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = 5;
int[][] map = new int[N][N];

// 배열에 넣기
for (int i=0; i<N; i++) {
	String line = br.readLine();  // 예: "11111"
    for (int j=0; j<N; j++) {
    	map[i][j] = line.charAt(j) - '0';  // '1' → 1
    }
}

// 확인용 출력
for (int[] row : map) {
	for (int n : row) {
    	System.out.print(n + " ");
    }
    System.out.println();
}

✔️ 문자 → 숫자

자바에서 '0', '1', '2', ..., '9'는 모두 char 타입입니다.
그런데 내부적으로는 ASCII 코드라는 정수값으로 저장돼요.

문자ASCII 코드
'0'48
'1'49
'2'50
'3'51
......
'9'57

따라서 문자에 '0'을 빼주면, 정수로 바꿔주는 효과가 있습니다!

2-2. 공백 있는 문자 데이터를 charAt()과 split() 없이 저장

입력 예시

G B G G B
G B G G B
B B B B G
B G B B B
G B B B B

코드

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = 5;
char[][] map = new char[N][N];

// 코드
for (int i = 0; i < N; i++) {
	StringTokenizer st = new StringTokenizer(br.readLine());
	for (int j = 0; j < N; j++) {
		map[i][j] = st.nextToken().charAt(0);  // "G" → 'G'
	}
}

// 확인용 출력
for (char[] row : map) {
	for (char c : row) {
		System.out.print(c + " ");
	}
	System.out.println();
}

charAt(index) — 특정 위치의 문자 하나 꺼내기

문자열에서 인덱스(위치)로 문자 하나만 가져오는 메서드입니다.

String word = "hello";
char first = word.charAt(0);  // 'h'
char second = word.charAt(1); // 'e'
  • 인덱스는 0부터 시작합니다.
  • 반환 타입은 char (문자열이 아니라 문자 하나).
  • 범위를 벗어나면 StringIndexOutOfBoundsException 발생하니 빈 문자열("")에 호출하면 안 됩니다.
"".charAt(0);  // 에러! 빈 문자열에는 0번째 인덱스가 없음

그래서 JadenCase 문제에서 if (!w.isEmpty()) 체크가 꼭 필요했던 이유가 여기 있습니다. 연속 공백으로 생긴 빈 문자열에 charAt(0)을 호출하면 바로 에러가 나거든요.

profile
할 수 있다!!!

0개의 댓글