본문 바로가기
Computer Science/Algorithm

[JAVA] 알파벳 찾기

by soro.k 2022. 3. 22.

https://st-lab.tistory.com/62?category=838567 

 

[백준] 10809번 : 알파벳 찾기 - JAVA [자바]

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어

st-lab.tistory.com

*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.


 

 

제출 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] arr = new int[26];
        Arrays.fill(arr, -1);

        String S = br.readLine();

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

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

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

    }
}

→ 각각의 알파벳의 위치를 지정하기 위한 int 배열을 만들어 각각의 값을 포함되어 있지 않은 경우를 나타내는 -1로 채운다.

→ 단어를 입력받아 for문을 이용해 각각의 알파벳을 찾는다.

→ int 배열에서 해당 알파벳의 위치를 찾아(arr[ch - 'a']) 인덱스 값을 넣는다.

 

※ 보통 배열에 담겨있는 문자의 인덱스를 알아낼 때 이중 for문 사용하게 되는데 되도록이면 사용을 지양하자.

대신 해당 문자의 아스키코드 값에 'a' 또는 97을 빼주면 된다.

 

※ 배열에 -1 값을 넣을 때 for문 대신 Arrays 클래스의 fill() 메소드를 사용하면 코드를 줄일 수 있다.(속도의 차이는 없음)

int[] arr = new int[26]

Arrays.fill(arr, -1);

배열의 모든 값을 -1로 채운다.

 

 

 

 

 

 

 

 

'Computer Science > Algorithm' 카테고리의 다른 글

[백준] 2869 - 달팽이는 올라가고 싶다 (Java)  (0) 2022.09.18
[백준] 1193번 - 분수찾기 (Java)  (0) 2022.09.18
[JAVA] 한수  (0) 2022.03.09
[JAVA] 셀프 넘버  (0) 2022.03.09
[JAVA] OX퀴즈  (0) 2022.03.08