백준

[백준 27866번] 문자와 문자열

쿵철집사 2023. 6. 10. 16:47
문제
단어 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 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));
		
	}
}