본문 바로가기
🥇Problem Solving (psS2mj)/BOJ

[BOJ] 10808. 알파벳 개수 (Java)

by psS2mj 2021. 5. 5.
반응형

www.acmicpc.net/problem/10808 (level: Bronze II)

 

10808번: 알파벳 개수

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

www.acmicpc.net


 

그동안 파이썬으로 꼼지락 대느라 자바에 대한 문법이나 감각이 좀 떨어져있는 것 같아서 쉬어가는 겸 가볍게 하나 풀어봤다. 1차원 배열과 아스키코드, charAt 메소드를 적절하게 사용해볼 수 있는 문제였다. 

 

문제는 매우 간단하기 때문에 특별한 것은 없었고, 핵심은 아스키코드를 활용하는 것!

 

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

/* @date: 2021/05/05
 * @author: psS2mj
 * @brief: BOJ_10808_알파벳 개수 */

public class BOJ_10808_알파벳개수 {

	static String S;
	static int[] alphabet = new int[26];

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

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

		for (int i = 0; i < S.length(); i++) {
			alphabet[S.charAt(i) - 97]++;
		}

		for (int j = 0; j < 26; j++) {
			System.out.print(alphabet[j] + " ");
		}

	} // main

}

 

처음에는 알파벳 배열 원소들의 카운트를 하나씩 증가시킬 때 사용할 idx라는 정수 변수를 하나 만드려고 했는데, 코드를 짜다 보니까 굳이 필요없겠다 싶어서 alphabet[S.charAt(i) - 97]++; 의 형태로 바로 써줬다.

 

그동안 파이썬으로 하느라 for문 같은건 다시 자바로 돌아왔을 때 좀 복잡하다고 느껴지긴 했지만… 그래도 파이썬은 1씩 증가시키는 연산을 할 때 cnt++를 사용할 수 없어서 cnt+=1와 같은 방법으로 증가시켜야 했는데, 자바는 EZ하게 alphabet[S.charAt(i) - 97]++; 의 형태를 사용할 수 있어 그건 편하다. 뭐든 장점이 있으면 단점이 있고, 단점이 있으면 장점이 있기 마련이나니…!😉

 

EZ합니다~

이 문제에서 기억할 건 아스키코드에서 A=65, a=97 그리고 charAt 메소드 정도!

감각 살리며 무난하게 3분컷 하고 넘어갑니다.

 

charAt 메소드 (출처: Java API 문서 - https://docs.oracle.com/javase/8/docs/api/)

반응형

'🥇Problem Solving (psS2mj) > BOJ' 카테고리의 다른 글

[BOJ] 2839. 설탕 배달 (Java)  (0) 2021.05.05
[BOJ] 11399. ATM (Java)  (0) 2021.05.02
[BOJ] 11721. 열 개씩 끊어 출력하기 (Java)  (0) 2021.05.02
[BOJ] 11047. 동전 0 (Java)  (0) 2021.05.02
[BOJ] 11399. ATM (Python3)  (0) 2021.04.23

댓글