본문 바로가기
Algorithm/Beakjoon

[Java] baekjoon 10809 : 알파벳 찾기 / 문자열

by Amy97 2021. 7. 15.
728x90

문제 


https://www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

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

www.acmicpc.net

해결 


각각의 알파벳에 대해서 입력받은 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성했다.

공교롭게도 자바에 똑같은 기능을 가진 함수가 있어 손쉽게 해결할 수 있었다.

 

indexOf(String keyword)

문자열 중 입력받은 문자가 포함돼있으면 해당 문자의 위치(index 값)을 리턴하고 문자가 포함돼있지 않으면 -1을 리턴한다.

구현 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
 
        String s = sc.next(); // 단어를 문자열로 입력받음
        int[] res = new int[26];
        // a ~ z의 포함을 확인해야 하므로 길이가 26인 배열 생성
        int letter = 'a'// a의 포함부터 확인해야 하므로 변수를 a(97)로 초기화
 
        for (int i = 0; i < res.length; i++) { // 배열의 길이만큼 for문 실행
            res[i] = s.indexOf(letter); // i번째 원소를 입력받은 문자의 indexOf 값으로 저장
            letter++// a ~ z 확인해야 하므로 증감식 작성
                      // 첫 번째 원소의 값은 a의 포함 유무, 26번째 원소의 값은 z의 포함 유무
        }
 
        for (int i = 0; i < res.length; i++) { // 배열의 길이만큼 for문 실행
            System.out.print(res[i] + " "); // indexOf 값이 저장된 배열의 원소를 차례대로 출력
        }
 
    }
}
cs

결과 


728x90

댓글