알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.
A~z까지의 개수를 세어야 한다고 했을 때 가장 먼저 떠오른 건 아스키 코드였다. 문제는 for문과 if ~ else if까지 작성했는데, 대체 answer[]에 어떻게 값을 넣어야 하는지를 모르겠는 거다. 역시 연산에 약하다 미쳐미쳐
초기화한 정수형 배열 int[] answer에는 모든 값들이 0으로 들어가 있을 테니, my_string에 포함된 문자에 해당하는 방에만 값을 + 해주면 된다(증감식 활용)는 생각이 들었고
자동으로 증가하는 i를 이용하기 위해 my_string.charAt(i)에서 가장 첫번째 문자인 A의 아스키코드를 빼주었다. 주의할 점은 A~Za~z로 길이가 52인 정수형 배열이 만들어진 것이기 때문에 소문자를 계산할 때는 97 - 26인 71을 빼주어야 한다는 점이다.
class Solution {
public int[] solution(String my_string) {
int[] answer = new int[52];
for(int i=0;i<my_string.length();i++){
if(my_string.charAt(i) >= 65 && my_string.charAt(i) <= 90){
answer[my_string.charAt(i) - 65]++;
}else if(my_string.charAt(i) >= 97 && my_string.charAt(i) <= 122){
answer[my_string.charAt(i) - 71]++;
}
}
return answer;
}
}
