문제
단어 S와 정수i가 주어졌을 때, S의 i번째 글자를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 S가 주어진다. 단어의 길이는 최대 1000이다.
둘째 줄에 정수 i가 주어진다. (1≤i≤|S|)
출력
S의 i번째 글자를 출력한다.
<어려웠던 점>
1. charAt() 함수 용법을 알고 있었는가?
2. 문자열의 특정 index 값은 0부터 시작한다는 점
<처음 시도해 본 코드>
package Bronze;
import java.util.Scanner;
public class b27866_String_i {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String S = sc.nextLine();
int i = sc.nextInt();
sc.close();
System.out.println(S.charAt(i));
}
}
입력
Sprout
3
출력
o
charAt 함수를 알고는 있었지만 이렇게 문제를 풀 때 생각해내지 못했다.
그래서 구글링을 해서 알게 되었다....😢
Scanner 메소드를 이용해 키보드 입력을 받는 변수 sc를 생성하고,
String 변수 S와 int형 변수 i를 생성하여 각각 입력을 받을 수 있도록 하였다.
그런데 출력값이 r이 아닌 o로 나왔다.
문자열의 특정 index값은 0부터 시작하기 때문에 그랬다.
0 | 1 | 2 | 3 | 4 | 5 |
S | p | r | o | u | t |
위 구조에 따라, 3번째 index 값인 o가 나온것이었다.
따라서 charAt(i - 1)으로 수정하여 맞는 결과값을 출력되게 하였다.
<정답>
package Bronze;
import java.util.Scanner;
public class b27866_String_i {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String S = sc.nextLine();
int i = sc.nextInt();
sc.close();
System.out.println(S.charAt(i - 1));
}
}
'백준' 카테고리의 다른 글
[백준 1152번] 단어의 개수 - JAVA[자바] (1) | 2023.06.20 |
---|---|
[백준 2480번] 주사위 세개 - JAVA[자바] (1) | 2023.06.18 |
[백준 14681번] 사분면 고르기 (1) | 2023.06.16 |
[백준 10818번] 최소, 최대 (1) | 2023.06.14 |
[백준 2884번] 알람 시계 (1) | 2023.06.08 |