최대 1 분 소요

[백준 10809번] 알파벳 찾기

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
26
27
28
29
30
31
32
33
34
package _1월_4주차;
 
import java.util.Scanner;
import java.util.Arrays;
public class 백준_손수경_정답_10809 {
 
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        String alpha = sc.nextLine();
        int[] asciiAlpha = new int[100];
        int[] ans = new int[26]; //아스키 코드로 알파벳 소문자 숫자: 97~122
        int size = alpha.length();
        Arrays.fill(ans, -1);
        
        for (int i = 0; i < size; i++) {
            asciiAlpha[i] = (int)alpha.charAt(i);
        }
        
        for (int i = 0; i < size; i++) {
            int index = asciiAlpha[i] - 'a';
            if (ans[index] != -1) {
                continue;
            }
            ans[index] = i;
        }
        
        for (int i = 0; i < 26; i++) {
            System.out.printf("%d ", ans[i]);
        }
        
    }
 
}
cs

알파벳이 없다면 -1을 출력하라고 했으므로 ans 배열에 처음부터 Arrays.fill(배열, 채울 숫자) 를 사용하여서 -1로 채워놓았다. 그 후 문자열의 문자 하나하나를 아스키코드 숫자로 바꾸어서 asciiAlpha 배열에 넣어주고, 아스키코드를 활용하여서 인덱스를 만들어 주었다. 이때, 같은 문자가 2번이상 나올 경우, 처음의 인덱스만 출력해야되므로 continue 를 사용하여 처리해주었다.

! 중요 !

  1. 자바에서 문자열의 문자를 사용하려면 인덱스를 사용하는 것이 아닌 .charAt(index) 를 사용해주어야 한다.
  2. 배열의 길이를 구하기 위해서는 length를 사용해야되고 문자열의 길이를 구하기 위해서는 length() 를 사용해주어야 한다.

댓글남기기