문자와 문자열 (27866) 풀이

2023. 6. 15. 10:12BaekJoon/문자열

문제내용

사용자에게 문자열 S와 정수 i를 입력받아 문자열에서 i번째의 위치만 문자가 어떤 문자인지 출력하는 문제이다.


풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String s = br.readLine();
		StringTokenizer st = new StringTokenizer(br.readLine());
		int i = Integer.parseInt(st.nextToken());
		int result = s.codePointAt(i-1);
		bw.write((char) result);
		bw.flush();
		bw.close();
	}

}

사용자에게 문자열과 정수를 입력받기 위해 BufferedReader와 StringTokenizer를 이용해 s,i를 각각 입력받았다.

문자열에서 제공하는 codePointAt메소드를 이용해 해당하는 인덱스의 문자에 유니코드 값을 얻었다.

유니코드 값을 result에 저장하고 문자 자료형으로 형변환 시켜 출력했다.

BufferedWriter 사용 후 자원 반납했다.

● 자바에서 char 자료형으로 변환시켜 정수를 입력하면 자동으로 유니코드 -> 문자로 변환시켜준다. 아스키 코드도 마찬가지이다.


겪었던 문제

이번 문제는 직접 구현하기 보다는 분명 문자열의 인덱스를 바로 추출해주는 방법이 있을 것 같지만 구글링을 최소화하고 먼저 문자열의 메소드를 차근차근 들여다 보았다. 그 중 원하던 기능의 메소드에 제일 가까웠던 것이 바로 codePointAt이였다. 만약 이걸 찾지 못했다면 문자열을 char[]로 따로 빼서 인덱스를 체크해 출력을 했을 것 같다.

역시 코딩은 아는 것이 힘인 것 같다. 경험해본자와 경험해보지 않은자의 차이가 하늘과 땅 차이인것 같다..😀

'BaekJoon > 문자열' 카테고리의 다른 글

알파벳 찾기 (10809) 풀이  (0) 2023.06.16
숫자의 합 (11720) 풀이  (2) 2023.06.16
아스키 코드 (11654) 풀이  (0) 2023.06.16
문자열 (9086) 풀이  (0) 2023.06.16
단어 길이 재기 (2743) 풀이  (2) 2023.06.15