내 블로그 목록

2020년 8월 27일 목요일

[백준 알고리즘] #java 1080번: 알파벳 개수

 

#백준 알고리즘 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 stub
BufferedReader 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문을 만들 있다.






 

 

댓글 없음:

댓글 쓰기