알고리즘/백준

[백준] 10808번 : 알파벳 개수 - JAVA(자바)

온한온 2025. 2. 16. 16:50

백준 10808번 : 알파벳 개수

 

 

문제 풀이

백준 10808번 알파벳 개수는 브론즈 4 난이도로 구현, 문자열에 관한 문제입니다.

단어는 알파벳 소문자로만 이루어져 있고, 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하면 됩니다.

 

저는 map과 아스키 코드를 활용해 각 알파벳과 개수를 저장했습니다.

key를 알파벳으로, value를 단어에 속한 알파벳 개수를 카운트하는 방식으로 풀이를 진행했습니다.

 

소문자 a는 아스키 코드로 97의 값을, 알파벳의 마지막인 소문자 z는 아스키 코드로 122의 값을 가집니다.

이를 활용해 문제를 풀 수 있습니다.

 

코드
import java.io.*;
import java.util.*;
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();
		Map<Character, Integer> map = new HashMap<>();
		
		for (int i = 97; i <= 122; i++) {
			map.put((char) i, 0);
		}
		
		for (int i = 0; i < S.length(); i++) {
			map.put(S.charAt(i), map.get(S.charAt(i)) + 1);
		}
		
		StringBuilder sb = new StringBuilder();
		for (Character key : map.keySet()) {
			sb.append(map.get(key)).append(" ");
		}
		bw.write(sb.toString());
		bw.flush();
		bw.close();
	}
}

처음 map에 알파벳 key 값을 저장하고, value는 0으로 넣었습니다.

이후 char 단위로 분해하며 key 값에 맞는 알파벳이면 value를 +1 하는 방식으로 풀었습니다.

 

마지막으로 key를 제외한 전체 value값을 출력합니다.

 

다른 분들의 풀이를 보니까 배열로 푸는 방식이 더 깔끔하고 빠른 거 같더라구요 ㅋㅋ

다음에는 배열과 아스키 코드를 잘 활용해볼 수 있기를...