문제
- 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
입력
- 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
출력
- 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
입출력 예제
설명
- 알파벳 a부터 z까지 반복하면서 있으면 위치, 없으면 -1을 출력하면 된다.
- a부터 z까지 반복을 수행할 때 연속된 숫자인 아스키코드로 가능하기 때문에 a의 97부터 z의 122까지 반복한다.
- for문의 시작인 97~ 122 까지 넣어서 문자가 있으면 문자의 위치, 없으면 -1을 return 하는 String 클레스의 indexOf() 사용한다.
- indexOf() 에서 return 되는 결과를 StringBuilder 에 append() 로 저장한다.
- for문이 종료되면 StringBuilder 를 출력한다.
참고 : String 클레스의 indexOf() 메소드 중 인자를 int로 받는 메소드를 사용하면 인자값을 아스키코드표 문자로 변환해서 문자열에서 검색한뒤 있으면 문자의 위치, 없으면 -1을 return한다. ( 해당 문제에 사용하기에 완벽함. )
String 클레스의 indexOf(int ch)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
// 10809 - 알파벳 찾기
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
// 97 ~ 122 ( a ~ z )
for(int i=97; i<123; i++) sb.append(str.indexOf(i)).append(" ");
System.out.println(sb);
}
}
|
cs |
'Algorithm > Baekjoon' 카테고리의 다른 글
백준(1157번) - 단어 공부 (0) | 2021.07.22 |
---|---|
백준(2675번) - 문자열 반복 (0) | 2021.07.22 |
백준(11720번) - 숫자의 합 (0) | 2021.07.18 |
백준(11654번) - 아스키 코드 (0) | 2021.07.18 |
백준(1065번) - 한수 (0) | 2021.07.17 |