알고리즘/백준

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

온한온 2025. 2. 21. 12:55

백준 10809번 : 알파벳 찾기

 

 

문제 풀이

백준 10809번 알파벳 찾기는 브론즈 2 난이도로 구현, 문자열 문제입니다.

저번에 작성한 10808번과 유사한 문제로 어려움 없이 풀 수 있습니다.

 

이번 방식에서는 map이 아닌 배열과 인덱스를 사용해서 풀었습니다.

이전 포스팅을 참고하면 제가 배열로 푸는 방식이 있다고 말씀드렸는데, 그 방식을 활용했습니다.

 

배열을 알파벳 개수 26개 크기로 선언을 하고,

배열의 인덱스 0번부터 소문자 a값을 넣기 위해 a의 아스키 코드인 97을 빼는 방식을 사용하면 됩니다.

 

코드
import java.io.*;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String S = br.readLine();
		int[] arr = new int[26];
		
		for (int i = 0; i < arr.length; i++) {
			arr[i] = -1;
		}
		
		for (int i = 0; i < S.length(); i++) {
			char chr = S.charAt(i);
			if (arr[chr - 97] != -1) continue;
			arr[chr - 97] = i;
		}
		
		StringBuilder sb = new StringBuilder();
		for (int i : arr) {
			sb.append(i).append(" ");
		}
		
		bw.write(sb.toString());
		bw.flush();
		bw.close();
	}

}

입력 받은 단어를 charAt()을 활용해서 char 형식으로 바꿉니다.

그 값에서 97을 뺐을 때 0이 되면 a, 1이면 b, 2이면 c...로 점점 커집니다.

따라서 0인 a ~ 25인 z까지의 값이 나올 때마다 그 인덱스의 값을 1개씩 증가시키면

전체를 출력했을 때 그 알파벳이 등장했음을 알 수 있습니다.

 

단, 알파벳이 단어에 포함되어 있지 않은 경우가 있기 때문에 배열을 미리 -1로 초기화해둡니다.

 

이번에는 배열과 인덱스를 활용해서 풀었지만

indexOf()를 사용해서도 간단하게 풀 수 있습니다.

 

indexOf()
특정 문자나 문자열에 해당하는 문자를 찾아서 인덱스 값을 반환하는 함수.
주어진 값이 없다면 -1을 리턴.