메모리: 84.7 MB, 시간: 2.95 ms
코딩테스트 연습 > 코딩테스트 입문
정확성: 100.0
합계: 100.0 / 100.0
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
my_string의 길이 ≤ 100my_string에는 숫자가 한 개 이상 포함되어 있습니다.my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.
- - -| my_string | result |
|---|---|
| "hi12392" | [1, 2, 2, 3, 9] |
| "p2o4i8gj2" | [2, 2, 4, 8] |
| "abcde0" | [0] |
입출력 예 #1
입출력 예 #2
입출력 예 #3
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
class Solution {
public int[] solution(String my_string) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < my_string.length(); i++) {
char a = my_string.charAt(i);
if (a <= 57 && a >= 48) {
list.add((int) a - '0');
}
}
Collections.sort(list);
int[] answer = list.stream().mapToInt(i -> i).toArray();
return answer;
}
}
class SolutionTest {
@Test
@DisplayName("hi12392 = [1, 2, 2, 3, 9]")
void solution() {
int[] ans = {1, 2, 2, 3, 9};
Assertions.assertThat(new Solution().solution("hi12392")).isEqualTo(ans);
}
@Test
@DisplayName("p2o4i8gj2 = [2, 2, 4, 8]")
void solution2() {
int[] ans = {2, 2, 4, 8};
Assertions.assertThat(new Solution().solution("p2o4i8gj2")).isEqualTo(ans);
}
@Test
@DisplayName("abcde0 = [0]")
void solution3() {
int[] ans = {0};
Assertions.assertThat(new Solution().solution("abcde0")).isEqualTo(ans);
}
}
풀이
문제에서 return 타입을 명시해줬다
Collections.sort와
stream을 사용해보기위해
List 타입의 arrayList를 만들어
0~9 아스키코드값에 해당하는지 범위를 찾고
해당한다면 '0'을 뺴줘서 다시 숫자 형태로 변환 후
list에 담아줬다
Collection으로 sort를 하고
solution 메서드에 return으로 명시되어있는 int[] 형태로 변환해줘야하는데
이 과정에서 stream을 사용해보았다.
stream은 개념을 잘 잡아야할것같다.