본문 바로가기
Baekjoon/[1] 자료구조

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

by Poorm 푸름 2023. 8. 9.

문제 10808번

 : 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성

 

 [입력]

  

 :  첫째 줄에 단어 S

 

 :  알파벳 소문자


 [출력]


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



 [코드]

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));
       
        int arr[] = new int[26];
        String s = br.readLine();
        
        for(int i =0; i<s.length();i++){
            char c = s.charAt(i);
            arr[c-97]++;
        }
        
        for(int i=0; i<26; i++){
            System.out.print(arr[i]+" ");
        }
    }
}

 

 [해설]

 

 : int arr[] = new int[26]; 출력할 알파벳 a ~ z 의 배열 

 :  String s = br.readLine(); 첫째줄 입력받기
         
 :  for(int i=0;i<s.length();i++){
             char c = s.charAt(i);  입력받은 문자들을 하나하나 뜯어보기
             arr[c-97]++; 소문자 a는 97 출력할 배열이 0 부터 시작하므로 가장 첫번째 알파벳 a가 0이 되게끔
    }                            입력받은 s의 알파벳 (= c) 에 97을 빼주고 그것을 출력 배열 순서로 지정한다

                                  ex) String s = aac 일 때

                                        a = s.charAt(0) / b = s.charAt(1) / c = s.charAt(2)

                                        arr[a-97] = a[0], arr[a-97] = a[0], arr[c-97] = a[2]

                                        arr[0] = 2, arr[2] = 1 (중복된 입력은 ++)

                                        출력: 2 0 1 0 0 0 0 0 0 0

                                      

 :  for(int i=0;i<26;i++){
            System.out.print(arr[i]+" ");  전체 알파벳 27개 자리 출력 (공백표시) 
    } 
    

이제 풀어보러 갈께요 :)

 

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

 

 

10808번: 알파벳 개수

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

www.acmicpc.net

 

 

* 독학으로 익히는 코딩이라 틀린 것이 있을 수 있습니다. 오류가 있다면 댓글을 통해 알려주세요. 감사합니다. *