[JAVA] 백준 27866. 문자와 문자열

이 글은 읽는데 약 2분이 걸립니다.

※개인 공부 목적의 정리글입니다.
이 글의 내용이 최선의 해답은 아닐 수 있습니다.

문제

403 Forbidden

단어 \(S\)와 정수 \(i\)가 주어졌을 때, \(S\)의 \(i\)번째 글자를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 \(S\)가 주어진다. 단어의 길이는 최대 \(1\,000\)이다.

둘째 줄에 정수 \(i\)가 주어진다. (\(1 \le i \le \left|S\right|\))

출력

\(S\)의 \(i\)번째 글자를 출력한다.

요약

단순히 주어진 문자열의 i번째 글자를 출력하는 문제이다.
다만 여러가지 방법으로 구현 가능하며 그 중 일부를 소개한다(Java 기준).

가능한 방법들

substring 이용

str.substring(i-1, i)

내가 풀 때 쓴 방법이다. 두 위치 사이의 문자열을 추출하는 substring을 이용하였다.
인덱스 자체는 0부터 시작하므로 찾을 위치에서 1을 빼준 위치를 시작으로 한글자만 추출하므로 i-1보다 1큰 i가 마지막 인덱스이다.

charAt 이용

str.charAt(i - 1)

charAt 메소드는 인덱스를 인자로 받아서 해당 위치의 글자를 char로 변환해서 반환한다.
마찬가지로 인덱스는 0부터 시작하므로 i-1을 해준다.

char array 이용

char[] char_arr = new char[1000];
char_arr = str.toCharArray();

char_arr[i-1]

문자열의 최대 길이가 1000이라고 조건이 걸려있으므로 길이가 1000인 char 배열을 생성 후 입력받은 문자열을 char 배열로 변환해 넣고 배열의 요소를 인덱스로 접근하는 방식이다.

댓글