알고리즘 분류
- 구현
- 문자열
풀이
- 아스키 코드 활용하면 쉬운 문제 : 아스키코드 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
반응형
'자료구조+알고리즘 > BOJ' 카테고리의 다른 글
[10798][java][백준] 세로 읽기 (0) | 2021.11.04 |
---|---|
[11721][java][백준] 열 개씩 끊어 출력하기 (0) | 2021.11.04 |
[16935][java][백준]배열 돌리기 3 (0) | 2021.10.26 |
[18111][java][백준]마인크래프트 (0) | 2021.10.24 |
[1966][java][백준]프린터큐 (0) | 2021.10.24 |