Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 알파벳 찾기 (10809) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 알파벳 찾기 (10809) (자바/Java)

luke-king 2024. 3. 10. 20:12

 

 

 

 

 

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

 

풀이.


public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int[] arr = new int[26];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = -1;
        }

        String str = sc.nextLine();

        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);

            if (arr[ch - 'a'] == -1) {
                arr[ch - 'a'] = i;
            }
        }

        for (int val : arr) {
            System.out.print(val + " ");
        }
    }
}

 

이번 문제는 시간이 걸렸다. 조금 더 다양한 문제들을 많이 풀어봐야겠다.

우선 풀이부터 가보겠다.

 

1. 알파벳 a-z까지 담고 있는 [26] 배열을 생성한 후 출력했을 때 모든 값이 -1로 나오게 해 준다.

 

2. 문자열이 주어진다.

 

3. 주어진 문자열 길이만큼 반복을 통해 charAt() 메서드를 사용해 한 글자씩 추출해 ch 변수에 담아준다.

 

4. 이 부분에서 중요한데 ch의 문자 위치를 arr배열의 값으로 바꿔줄 것이다.

    아스키코드를 사용한다. 'a'를 10진수로 나타내면 97인데 'b'가 들어왔을 때 arr [ b(98) - a(97) ] = arr[1] 이 된다.

    arr[1] = i (0) 

    알파벳 b는 arr배열에 0 출력되는 것이다. 하나를 더 예시를 들자면 'a'가 들어왔다면 arr[ a(97) - a(97) ] = arr [0]

     arr [0] = i (1) 위치는 1인 것이다.

 

 

최대한 설명해 보겠다 설명했지만... 아직 필자의 설명의 부족함이 많아 이해하기 어려우실 수도 있다 생각이 듭니다..

더욱더 매끄럽고 이해하기 쉽게 설명할 수 있도록 노력하겠습니다..!!!