본문 바로가기
알고리즘/문자열 처리, 기타 자료구조

[java 백준] 브론즈 2/ 10809번 알파벳찾기

by Meaning_ 2021. 8. 25.
728x90
반응형

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

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
import java.io.IOException;
import java.util.Scanner;
 
public class Main {
    public static String n;
    public static int[] arr;
 
    public static void main(String[] args) throws NumberFormatException, IOException {
 
        Scanner sc = new Scanner(System.in);
 
        arr = new int[26];
        String s = sc.next();
        for (int i = 0; i < 26; i++) {
            arr[i] = -1;
        }
 
        for (int i = 0; i < s.length(); i++) {
            if (arr[s.charAt(i) - 97] == -1) {
                arr[s.charAt(i) - 97] = i;
            }
 
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
 
    }
 
}
cs

 

풀면서 잘못 생각한 것 


 

if (arr[s.charAt(i) - 97] == -1) {

                arr[s.charAt(i) - 97] = i;

}

--> 이게 가장 중요했다. 배열 값이 -1일 상태일때만 i값으로 변수선언해주는 것이 핵심이다.

예를 들면 o처럼 중복해서 나오는 경우 5번째 나오는 것이 가장 앞에 나오는 것이기 때문에

-1일 때만 i로 변수선언해주지 않으면 o의 등장위치가 6으로  나오기 때문이다. 

728x90
반응형

댓글