gone

#[백준] 10809 알파벳찾기 본문

알고리즘

#[백준] 10809 알파벳찾기

예쁨받는 돌맹이 2024. 1. 11. 13:51

 

제출1)

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main2 {
    public static void main(String[] args) throws Exception {
    
        // 알파벳 위치를 기록하기 위한 배열
        int[] arr = new int[26];

        // 포함되지않으면 -1 로 기록해야하므로, 모두 -1로 초기화
        for(int i=0; i<arr.length; i++){
            arr[i] = -1;
        }   

        // 입력값
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String S = br.readLine();
        
        for(int i=0; i<S.length(); i++) {
            // System.out.println(S.charAt(i) - 'a'); // 아스키코드
            int n = S.charAt(i) - 'a';

            if (arr[n] < 0) {
                arr[n] = i;
            }
        }
        
        for(int a: arr) {
            System.out.print(a + " ");
        }
    }
}

 

 

1. 입력받은 값의 알파벳이 존재 하지 않을 경우 -1로 출력

임의의 알파벳 크기의 배열을 생성해서 우선 모두 -1로 초기화 한다.

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

 

2. 알파벳 순서 값 찾기

알파벳의 순서를 알기 위해서 아스키코드를 이용하였다.

'a' 의 아스키코드 값은 97이다. 따라서 [소문자알파벳] - 'a' 를 하면 알파벳의 순서를 쉽게 알 수 있다.

 

int n = S.charAt(i) - 'a';

 

3. 현재 입력한 값의 알파벳 위치값은 i가 가지고 있다.

arr[n] = i;

 

4. 같은 알파벳은 처음등장한 초기 알파벳위치값을 저장한다.

if (arr[n] < 0) {
                arr[n] = i;
            }

 

'알고리즘' 카테고리의 다른 글

#[백준] 2675 문자열 반복 (StringBuilder 클래스)  (0) 2024.01.11
#[백준] 11720 숫자의 합  (1) 2024.01.11
#[백준] 11654 아스키 코드  (2) 2024.01.10