프로그래머스 코딩테스트 연습 입문단계 '문자열 정렬하기' 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/120850
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❓ 문제 설명
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
※ 아래 입출력 예시를 참고하세요!
⚠️ 제한사항 및 입출력 예시
- 1 ≤ my_string의 길이 ≤ 100
- my_string에는 숫자가 한 개 이상 포함되어 있습니다.
- my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.
입출력 예시 ▼
입력 (my_string)
"hi12392"
출력 (return 값)
[1, 2, 2, 3, 9]
// "hi12392"에 있는 숫자 1, 2, 3, 9, 2를 오름차순 정렬한 [1, 2, 2, 3, 9]를 return 합니다.
✏️ 직접 구현한 코드
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(String my_string) {
List<Integer> char_ans = new ArrayList<>(); // List 생성
int cnt = 0; // 배열 크기를 지정할 때 사용
for(int i = 0; i < my_string.length(); i++) {
char ch = my_string.charAt(i);
if(ch >= 48 && ch <= 57) { // 아스키코드를 이용해 숫자를 찾음
char_ans.add(ch-'0');
cnt++;
}
}
int answer[] = new int[cnt];
for(int i = 0; i < answer.length; i++) { // List를 배열로 변환
answer[i] = char_ans.get(i);
}
Arrays.sort(answer); // 오름차순 정렬
return answer;
}
}
🗣️ 코드 설명
- List를 사용하기 위해서 List와 ArrayList 클래스를 import 했고, sort메서드를 사용하기 위해서 Arrays 클래스를 import 했습니다.
- Integer타입 char_ans List를 생성하고, 마지막 결과 배열의 크기를 담을 cnt를 생성했습니다.
- my_string 길이만큼 반복하는 for문을 만들었습니다. 그 안에서 charAt메서드를 이용해 my_string의 한 글자씩 char로 변환한 뒤, 아스키 코드와 비교해서 숫자만 char_ans에 추가합니다. 또 이때 마지막 결과 배열의 크기를 구하기 위해 cnt를 증가시킵니다.
- 위 for문에서 구한 cnt값으로 결과 배열인 answer을 생성합니다.
- for문을 이용해 List의 값을 answer 배열로 복사했습니다.
- Arrays 클래스의 sort메서드를 이용해 answer배열을 오름차순 정렬 후 리턴했습니다.
⭐ 새로 알게된 점
- charAt() : 문자열에서 특정 문자를 char 타입으로 변환할 때 사용
사용 예
String str = "안녕하세요";
char ch = str.charAt(0); // char타입으로 변환할 문자열의 순서를 괄호 안에
System.out.println(ch);
안
charAt 메서드 이해에 도움되는 블로그 ▼
JAVA 코딩테스트 - charAt() 함수
charAt 함수란?String 타입의 데이터(문자열)에서 특정 문자(character)를 char 타입으로 변환할 때 사용하는 함수이다.예시)결과반복문 활용 예시 1)역순 조회결과반복문 활용 예시 2)순서대로 조회결과
velog.io
- char타입을 int타입으로 변환하는 법
char타입 '1'을 int타입으로 변환하고 싶다면
아스키 코드에서 '0'이 48이므로
'1' - '0' = 49 - 48 = 1
변환시키고 싶은 문자에서 '0'을 빼면 된다.
- List를 배열로 변환하는 법
List 클래스의 get메서드를 이용해 List의 값을 가져와 배열에 새로 넣는다.
사용 예
for(int i = 0; i < answer.length; i++) { // List를 배열로 변환
answer[i] = char_ans.get(i);
}
'코딩테스트 회고록 > 코테_Java' 카테고리의 다른 글
[JAVA] 학교 수행평가 코딩테스트 - 정수 5개를 배열에 저장하고 평균 출력하기 (0) | 2023.03.04 |
---|---|
[JAVA] 프로그래머스 - 진료순서 정하기 (0) | 2023.03.04 |
[JAVA] 학교 수행평가 코딩테스트 - 3년 간의 1, 2학기 성적 입력받고 전체 평균 점수 구하기 (0) | 2023.03.02 |
[JAVA] 학교 수행평가 코딩테스트 - 정수 10개를 배열에 저장 후 가장 큰 수 출력 (0) | 2023.02.28 |
[JAVA] 프로그래머스 - k의 개수 (1) | 2023.02.28 |