본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 10809번 java 자바 알파벳 찾기

by 졸린이 2020. 9. 13.
반응형

백준 10809번 java 자바 알파벳 찾기


소문자로 단어 하나를 입력한다. 위의 결과 처럼 출력하는 프로그램을 만든다.

알파벳은 26개있는데 a는 첫번째고 b는 두번째, c는 세번째에 위치한다.

bbac를 입력하면 출력할 때 각 알파벳이 해당하는 지점에서 입력될때의 위치를 출력한다. 

하지만 b는 두 번 입력되었으므로 처음 등장했을때의 위치를 출력한다.

a는 세 번째에 입력되었으므로 2(0, 1, 2)를 a의 위치 첫번째에 출력하면 된다.

b는 첫 번째 두 번째에 입력되었으나 첫 번째 위치만(0) b의 자리에서 출력한다.

c는 네번째에 입력해서 3(0, 1, 2, 3)을 c 자리에서 출력한다. 위와같은 결과가 나온다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
 
//baekjoon_10809
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int check[] = new int[26];
        
        for(int i=0; i<check.length; i++) {
            check[i] = -1;
        }
        String st = sc.next();
        for(int i=0; i<st.length(); i++) {
            char c = st.charAt(i);
            int tmp = (int)c;
            tmp -= 97;
            if(check[tmp] == -1)
                check[tmp] = i;
        }
        for(int i=0; i<check.length; i++)
            System.out.print(check[i] + " ");
    }
}
cs

line 7 : 알파벳은 a~z까지 26개이므로 26개를 출력해야 한다. 때문에 26개의 크기로 선언.

line 10 : 입력되지 않은 알파벳은 -1로 출력한다.

line 12 : String 변수에 next()로 입력받는다.

line 13 : 문자열 길이만큼 반복.

line 14 : 문자 하나를 charAt(i)로 추출한다.

line 15 : 추출한 문자를 정수로 변환하여 tmp 변수에 담는다.

line 16 : tmp에서 97을 빼는 이유는 15행에서 char 변수를 int로 변환하여 tmp에 집어 넣는데 알파벳 a가 아스키 코드로 97을 의미하기 때문에 97을 빼주어 0값을 가지게 한다.

check[] 배열에서 check[0]으로 접근하기 위함.

line 17 : 10행에서 전부 -1로 초기화했으므로 한번 도 접근 안한 배열 위치는 -1이다.

즉 첫번째 등장한 값이면 문자열의 몇번째 있는지를 의미하는 i값을 저장한다.

line 20, 21 : for문을 다 돌면 check배열을 출력한다.

반응형

댓글