#백준 알고리즘 10808번: 알파벳 개수
문제: 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오.
입력: 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
출력: 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다
예제 입력 1: baekjoon
예제 출력 1: 1 1 0 0 1 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0
<나의 코드>
package algo.aug.stack;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.Arrays;import java.util.List;import java.util.Stack;import javax.imageio.plugins.bmp.BMPImageWriteParam;public class stack_10808_AlpabetCnt {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubBufferedReader br = new BufferedReader(new InputStreamReader(System.in));char[] APB = "abcdefghijklmnopqrstuvwxyz".toCharArray();char[] in = br.readLine().toCharArray();Arrays.sort(in);int[] num = new int[APB.length];Arrays.fill(num, 0);//Stack<Character> stack = new Stack<Character>();for(int i=0; i<in.length; i++) {for(int j=0; j<APB.length; j++) {if(in[i]==APB[j]) num[j]+=1;}}BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));for(int j=0;j<num.length; j++) {bw.write(num[j]+" ");}bw.flush();bw.close();br.close();}}
<다른 사람의 코드1>
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 in = br.readLine();int[] APB = new int[26];for(int i=0; i<in.length(); i++) {int num = in.charAt(i) - 97;APB[num] += 1;}for(int n: APB) {bw.write(n + " ");}bw.flush();bw.close();br.close();}}출처: https://takeknowledge.tistory.com/84<배울 부분>
[1] int num = in.charAt(i) – 97;
ASCII 코드 계산으로 훨씬 간단한 코드를 작성할 수 있다.
[2] for(int n: APB)
출력 부분에서 for(int n: APB)로 간단한 for문을 만들 수 있다.
댓글 없음:
댓글 쓰기