코딩테스트
[코딩테스트 입문] 문자열 정렬하기 (1) ★
summ.n
2025. 4. 22. 23:31
🔸 문제 설명
문자열 my_string이 주어졌을 때,
그 안에 있는 숫자만 골라서 오름차순 정렬한 배열을 반환하는 문제입니다.
🔸 입출력 예시
my_string | 결과 |
"hi12392" | [1, 2, 2, 3, 9] |
"p2o4i8gj2" | [2, 2, 4, 8] |
"abcde0" | [0] |
🔸 문제 해결 흐름
- 문자열에서 숫자만 남기기
→ 소문자 제거: replaceAll("[a-z]", "") - 문자들을 숫자로 변환해서 배열에 담기
→ charAt(i) - '0' 사용 - 배열을 정렬하기
→ Arrays.sort(answer)
🔸 최종 정답 코드
import java.util.Arrays;
class Solution {
public int[] solution(String my_string) {
my_string = my_string.replaceAll("[a-z]", ""); // 1. 소문자 제거
int[] answer = new int[my_string.length()]; // 2. 숫자 개수만큼 배열 생성
for (int i = 0; i < my_string.length(); i++) {
answer[i] = my_string.charAt(i) - '0'; // 3. 문자 → 숫자 변환
}
Arrays.sort(answer); // 4. 오름차순 정렬
return answer;
}
}
🧠 내가 헷갈렸던 부분 정리
❓ charAt(i) - '0' 이 뭐지?
- 문자열 "123" 은 실제로는 문자들 '1', '2', '3'로 구성돼 있음
- 문자와 숫자는 다름!
예: '1'은 숫자 1이 아니라 문자 코드 49 - '1' - '0' = 49 - 48 = 1
→ 이렇게 하면 진짜 숫자 1이 됨!
'7' - '0' → 55 - 48 = 7
'0' - '0' → 48 - 48 = 0
'9' - '0' → 57 - 48 = 9
💡 포인트 요약
개념 | 설명 |
replaceAll("[a-z]", "") | 문자열에서 소문자 제거 |
charAt(i) | 문자열에서 문자 하나 가져오기 |
'문자' - '0' | 문자 → 숫자로 변환하는 방법 |
Arrays.sort() | 정수 배열 정렬 |