Algorithm/Baekjoon

백준(10809) - 알파벳 찾기

Debaeloper 2021. 7. 19. 12:28

백준(10809) - 알파벳 찾기

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

 

문제

  • 알파벳 소문자로만 이루어진 단어 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