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();
}
profile
할 수 있다!!!

0개의 댓글