본문 바로가기
Algorithm

[백준/JAVA] 알파벳 개수 boj10808

by jyee 2024. 1. 24.
728x90
반응형

 

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

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

이 문제는 나의 짧은 알고리즘 지식으로 인해 푸는데 시간만 엄청 걸렸는데

일단 문제를 보고 내가 구현하고자 했던 것은

1. 배열을 만들어 알파벳을 a~z까지 넣는다.

2. 스캐너를 활용해서 객체 s에 있는 단어를 한글자씩 쪼개어 배열에 있는지 for문으로 검사하고 있으면 1, 없으면 0출력 

대충 이런식으로 하고 싶었음 

근데 한 글자씩 쪼개고 for문 돌리는거 맞나? 이러다가 모르겠다로 되버림

 

1번만 완성,,,
String[] alphabet = new String[26];
       char currentChar = 'a';

       for(int i=0; i<26; i++){
           alphabet[i] = String.valueOf(currentChar);
           currentChar++;
       }

근데 어떻게 쓰일 수 있을까... 일단 아님 나중에 다른 방법으로도 생각해보고 풀이해봐야겠다

 

정답 코드:

import java.util.Scanner;

public class boj10808_2 {
    public static void main(String[] args) {
        // 알파벳의 등장 횟수를 저장할 배열 (a부터 z까지 26개)
        int[] result = new int[26];

        // 입력으로 받은 문자열을 문자 배열로 변환
        char[] temp = scan.next().toCharArray();

        // 각 문자에 대해 알파벳 등장 횟수 계산
        for (int i = 0; i < temp.length; i++) {
            // 각 문자에 대해 알파벳 'a'의 ASCII 코드 값(97)을 뺀 결과를 이용하여
            // 알파벳 'a'부터 'z'까지의 인덱스로 매핑
            int index = temp[i] - 97;

            // 해당 인덱스에 대응하는 배열 요소(알파벳의 등장 횟수) 증가
            result[index]++;
        }

        // 각 알파벳의 등장 횟수를 출력
        for (int i = 0; i < result.length; i++) {
            System.out.print(result[i] + " ");
        }
    }
}
728x90
반응형

'Algorithm' 카테고리의 다른 글

[백준/JAVA] 럭비클럽 boj2083  (0) 2024.03.07
[백준/JAVA] 상근날드 boj5543  (1) 2024.01.24
[백준/java] R2 3046번  (0) 2024.01.21
[백준/java]빠른 A+B 15552번  (0) 2024.01.18
[백준/java]문자와 문자열 27866번  (0) 2024.01.12