728x90
코드 힌트
- 알파벳 빈도수 카운트:
- 문자열에 포함된 각 알파벳의 등장 횟수를 카운트해야 합니다. 이를 위해 int 배열을 사용하여 알파벳의 빈도수를 저장합니다.
- 배열의 인덱스는 알파벳의 ASCII 코드에서 'a'를 뺀 값을 사용하여 각 알파벳을 구분합니다. 예를 들어, 'a'는 인덱스 0, 'b'는 인덱스 1, 'z'는 인덱스 25입니다.
- 문자 빈도수 처리:
- 문자열을 순회하면서 각 문자의 등장 횟수를 배열에 기록합니다. 배열의 값이 1인 경우 해당 문자는 문자열에서 유일하게 나타난 문자입니다.
- 결과 문자열 생성:
- 등장 횟수가 1인 문자를 찾으면, 이 문자를 결과 문자열에 추가합니다.
- StringBuilder를 사용하여 최종 결과 문자열을 효율적으로 구성합니다.
- 문자와 인덱스 변환:
- 배열의 인덱스를 문자로 변환하려면, char로 변환할 때 인덱스에 'a'를 더합니다. 이는 인덱스를 ASCII 코드로 변환하여 문자로 바꾸는 방법입니다.
- 복잡도 고려:
- 이 코드는 문자열을 한 번 순회하여 빈도수를 계산하고, 알파벳 배열을 한 번 순회하여 결과를 생성하므로 시간 복잡도는 O(n)입니다. 이 접근 방식은 효율적입니다.
정답은 더보기 클릭
더보기
class Solution {
public String solution(String s) {
// 알파벳의 등장 횟수를 저장할 배열 초기화 (a부터 z까지 26개)
int[] alphaIndex = new int[26];
// 주어진 문자열을 순회하며 각 알파벳의 등장 횟수를 카운트
for (char c : s.toCharArray()) {
alphaIndex[c - 'a']++; // 'a'를 빼서 알파벳을 0~25 범위로 매핑
}
// 결과 문자열을 생성하기 위한 StringBuilder 초기화
StringBuilder sb = new StringBuilder();
// 각 알파벳의 등장 횟수를 확인
for (int i = 0; i < alphaIndex.length; i++) {
// 등장 횟수가 1인 알파벳을 결과 문자열에 추가
if (alphaIndex[i] == 1) {
sb.append((char)('a' + i)); // 인덱스를 문자로 변환하여 추가
}
}
// 결과 문자열 반환
return sb.toString();
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 직사각형 넓이 구하기 (0) | 2024.08.15 |
---|---|
[프로그래머스] 컨트롤 제트 (0) | 2024.08.14 |
[프로그래머스] A로 B 만들기 (0) | 2024.08.14 |
[프로그래머스] 숨어있는 숫자의 덧셈 (2) (0) | 2024.08.14 |
[프로그래머스] 팩토리얼 (0) | 2024.08.14 |