본문 바로가기

자료구조+알고리즘/BOJ

[10808][java][백준] 알파벳 개수

알고리즘 분류

  • 구현
  • 문자열

 

 

풀이

- 아스키 코드 활용하면 쉬운 문제 : 아스키코드 97번 = a

- 1 : Scanner 

  2.: StringBuilder

 

StringBuilder String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라
기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다.

- 값은 memory에 append하는 방식으로 클래스를 직접생성하지 않는다. 
따라서 긴 문자열을 더하는 상황이 발생할 경우 적극적으로 사용
- StringBuilder 에는 append() 가 있는데 이는 문자열을 더하는 역할을 한다.
- 만들어진 문자열을 출력하기 위해서는 StringBuilder의 인스턴스인 sb toString() 을 사용

 

java코드

 

- Scanner 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        int[] count = new int[26];
 
        for(int i=0; i<input.length(); i++){
            count[input.charAt(i) - 97]++;
        }
        for(int i=0; i<count.length; i++){
            System.out.print(count[i] + " ");
        }
    }
}
 
cs

 

- StringBuilder 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int[] count = new int[26];
 
        String input = br.readLine();
 
        for(int i=0; i<input.length(); i++){
            count[(int)input.charAt(i) - 97+= 1;
        }
        for(int i=0; i<count.length; i++){
            sb.append(count[i]);
            sb.append(" ");
        }
        System.out.println(sb);
    }
}
 
cs
728x90
반응형