📝 문제
💭 풀이 방법
- 출력 결과값을 보아 a부터 z까지의 개수를 모두 출력해야하므로 26개를 갖는 정수형 배열을 선언
- 아스키코드 값 이용하기
- a는 97번이므로 입력한 값에 97을 빼면 소문자 알파벳의 배열의 인덱스와 동일해진다!
예를 들어, apple을 입력했다고 가정했을 때, a는 아스키코드의 값이 97이므로 -97을 하면 0이 된다.
즉, array[0]에는 a의 개수가 들어가는 자리이므로, 인덱스와 값이 동일해지는 것이다.
마찬가지로, p의 아스키코드의 값은 112이고, 97을 빼면, 15이다. 즉, array[15]에 p의 개수를 넣을 수 있는 것이다.
- charAt() 사용하기
- charAt() 이란 String 으로 저장된 문자열 중에 한 글자만 char 타입으로 변환해줍니다.
- for문을 돌려 출력하기
- 개수를 공백으로 구분하여 출력하므로 " " 추가하기
😊 작성한 코드
package String;
import java.util.Scanner;
public class 알파벳_개수 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int array[] = new int[26];
String word = scanner.nextLine();
for(int i=0; i<word.length(); i++) {
array[word.charAt(i)-97]++;
}
for(int i=0; i<array.length; i++) {
System.out.print(array[i]+" ");
}
}
}
🚨 주의사항
- 백준문제를 자바로 푼 경우, 제출할 때는 class 이름은 Main 으로, 코드 위에 package가 없어야한다.