본문 바로가기
코딩공부/백준 (java)

[백준 10809] 알파벳 찾기 (java)

by CodingKwon 2021. 7. 8.

문제 링크

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

나의 코드 (java)

import java.util.Scanner;

public class Main {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);

        // 단어를 받음
        String S = sc.nextLine();

        // 알파벳의 배열 (알파벳은 26개)
        int arr[] = new int[26];

        // 알파벳 배열 -1로 초기화
        for (int i=0; i<arr.length; i++){
            arr[i] = -1;
        }


        for (int j=0; j<S.length(); j++){
            // 각 자리 문자를 변수에 담음
            char c = S.charAt(j);
            
            // 단어에 포함된 경우 처음 위치를 찾아야 하기 때문에 변경되지 않은 값만 변경하는 조건
            if (arr[c-'a'] == -1){
                // 문자 - 'a'로 몇 번째 알파벳인지 찾아서 배열에 몇 번째 숫자인지 입력
                arr[c-'a'] = j;
            }
        }

        // 배열을 차례대로 출력
        for (int k=0; k<arr.length; k++){
            System.out.print(arr[k] + " ");
        }
    }
}

 

알파벳의 위치는 알파벳 - 'a'로 배열의 위치를 구할 수 있다. 이 방식을 예로 들면 a의 경우 0이 이라는 값을 갖게 됩니다.

이는 아스키코드를 이용한 방법입니다.

 

이 문제는 같은 알파벳이 있을 때 처음의 알파벳 위치를 출력하게 되어 있기 때문에 이를 검증하는 if문을 만들어주어야 합니다.

댓글