728x90
코드 힌트
- 아스키 코드란?
- 컴퓨터는 문자를 숫자로 저장하고 처리합니다. 아스키(ASCII) 코드는 문자와 숫자를 일대일로 매핑한 표준 코드 체계입니다.
- 각 문자는 고유한 정수 값으로 표현됩니다. 예를 들어, 대문자 'A'는 65, 소문자 'a'는 97의 아스키 코드 값을 갖습니다.
- 문자열 순회
- 문자열을 순회하면서 각 문자의 아스키 코드 값을 확인할 수 있습니다.
- Java에서는 charAt() 메서드를 사용하여 각 문자의 위치에 따른 문자를 얻을 수 있습니다.
- 대소문자 구분
- 대문자와 소문자를 구분하여 처리해야 할 경우가 있습니다. 이를 위해 아스키 코드 값을 비교하여 구분할 수 있습니다.
- 예를 들어, 'A'부터 'Z'까지의 문자는 아스키 코드 값이 65부터 90까지이며, 'a'부터 'z'까지는 97부터 122까지입니다.
- 인덱스 계산
- 문자열 내에서 문자의 출현 빈도를 세는 경우, 각 문자의 아스키 코드 값을 기준으로 인덱스를 계산하여 카운트할 수 있습니다.
- 대문자의 경우 'A'를 기준으로 한 인덱스는 char - 'A'로 계산할 수 있습니다.
- 소문자의 경우 'a'를 기준으로 한 인덱스는 char - 'a' + 26으로 계산할 수 있습니다.
- 배열 활용
- 위와 같은 방식으로 계산된 인덱스를 배열의 인덱스로 사용하여 각 문자의 출현 횟수를 카운트할 수 있습니다.
- 이 방법은 문자열을 효율적으로 순회하면서 각 문자의 출현 빈도를 계산하는 데 유용합니다.
정답은 더보기 클릭
더보기
class Solution {
public int[] solution(String my_string) {
// 알파벳 대소문자를 모두 포함하는 배열을 생성합니다.
// 인덱스 0~25: 대문자 'A'부터 'Z'까지
// 인덱스 26~51: 소문자 'a'부터 'z'까지
int[] result = new int[52];
// 문자열을 순회하면서 각 문자의 출현 빈도를 기록합니다.
for (int i = 0; i < my_string.length(); i++) {
char ch = my_string.charAt(i);
// 대문자인 경우
if (ch >= 'A' && ch <= 'Z') {
// 'A'를 기준으로 인덱스를 계산하여 result 배열에 카운트합니다.
result[ch - 'A']++;
}
// 소문자인 경우
else if (ch >= 'a' && ch <= 'z') {
// 'a'를 기준으로 인덱스를 계산하여 result 배열에 카운트합니다.
result[ch - 'a' + 26]++;
}
}
return result;
}
}
조건문 간단하게 수정하기
class Solution {
public int[] solution(String my_string) {
int[] result = new int[52]; // 알파벳 대소문자를 모두 포함하는 배열 생성
// 문자열을 순회하며 각 문자의 출현 빈도를 카운트
for (int i = 0; i < my_string.length(); i++) {
// 대문자인 경우
if (my_string.charAt(i) < 'a') {
result[my_string.charAt(i) - 'A']++; // 'A'를 기준으로 인덱스 계산하여 카운트
}
// 소문자인 경우
else {
result[my_string.charAt(i) - 'a' + 26]++; // 'a'를 기준으로 인덱스 계산하여 카운트
}
}
return result; // 결과 배열 반환
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 다음에 올 숫자 (0) | 2024.08.05 |
---|---|
[프로그래머스] 글자 지우기 (0) | 2024.08.02 |
[프로그래머스] qr code (0) | 2024.08.02 |
[프로그래머스] 세로 읽기 (0) | 2024.08.02 |
[프로그래머스] 7의 개수 (0) | 2024.08.02 |