백준 10808번 알파벳 개수 같은 문제는 배열로 접근하면 좋은 이유
단어 처음인 b부터 끝 n까지 배열의 모든 요소들을 접근해야 된다. 그래서 시간 복잡도가 n인 배열을 쓰는 것이고
알파벳 개수를 담은 자료구조는 알파벳 a의 개수부터 z의 개수는 0개로 끝난다. 여기서 a부터 z 순서는 정해져있다. 그래서 굳이 push, pop 같은 거 안 써도 된다. 오히려 배열이 편하다고 생각이 든다. 그래서 배열을 쓰면 좋은 것.
구현 코드
import java.io.*;
import java.util.Arrays;
public class Main { // 1157, 15552번 참고
//enhanced for문 개념 참고
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] check = new int[26];
Arrays.fill(check, 0);// 초기값을 다 0으로 해준다.
String str=br.readLine();
//br.readLine()으로 받은 다음
char[] word=str.toCharArray(); // 자바는 문자열의 끝을 표시하지 않는다
//String형을 char형으로 바꿔야 돼
//문자 하나씩 요소에 저장할 것이니까
for(int e:word)
{
int d = (byte)e; // 아스키코드 변환
int k;
if(d>64 && d<91) {
k=d-65; //k는 0~25
check[k] += 1;
}
else if(d>96 && d<123)
{
k=d-97;//0~25
check[k]+=1;
}
}
for(int i=0; i< check.length; i++)
{
bw.write(String.valueOf(check[i]));
//요소 하나하나인 e를 형 변환 해주기
if(i!=check.length-1)
bw.write(" ");
}
bw.flush();
bw.close();
}
}
참고자료) 이전 문제 참고-ValueOf 등의 함수 사용 방법, enhanced for문 참고(윤성우님 책)
백준 11659번 구간 합 알고리즘 이용 (0) | 2023.01.08 |
---|---|
[백준 Java]15552번 코드 분석 (0) | 2022.12.19 |
문자열 분리해서 입력 받기 (0) | 2022.11.29 |
백준 빠른 A+B] BufferedReader BufferedWriter 정리할 것 (0) | 2022.11.25 |
[백준 입출력 연습] System.in / InputStreamReader / BufferedReader 원리 정리 (0) | 2022.11.24 |
댓글 영역