프로그래머스 코딩테스트 입문 0단계 문제입니다
https://school.programmers.co.kr/learn/courses/30/lessons/120850
📢 문제 설명
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
⭕ 정답 코드
1. 나의 풀이
class Solution {
public int[] solution(String my_string) {
char[] chars = my_string.toCharArray(); //String to char[]
int[] answer = CharBuffer.wrap(chars).chars() //char[] to Stream
.filter(Character::isDigit) //숫자만 남기기
.map(Character::getNumericValue) //숫자의 아스키코드인 값('50')들을 실제 값(2)으로 바꾸어주기
.sorted() //정렬
.toArray(); //Stream to Array
return answer;
}
}
- 문자열로 char 배열 만들기
- char 배열로 스트림 만들어서 숫자만 남기고, int형 숫자로 변환해준다
- 정렬한 뒤 반환
2. 다른 분의 풀이
class Solution {
public int[] solution(String my_string) {
return Arrays.stream(my_string.replaceAll("[A-Z|a-z]", "").split("")) //숫자만 남긴 문자열 to Stream
.sorted() //정렬
.mapToInt(Integer::parseInt) //String to int
.toArray(); //배열로 만들기
}
}
- 나와의 차이점
- 1. char를 안 거치고 바로 String to Int
- 2. 숫자를 뺀 String으로 스트림 생성
📒 기억하고 갈 문법
char배열로 Stream 만들기
CharBuffer.wrap(배열명).chars()
replaceAll 정규표현식 (복수 문자 지정)
("[abc]") => a, b, c 문자 모두 바꾼다
("[^abc]") => a, b, c 문자를 제외한 모두를 바꾼다
("[1-3]") => 1에서 3까지 바꾼다
("[^1-3]") => 1에서 3을 제외한 모두를 바꾼다
("[1-3|6-8]") => 1에서 3 or 6에서 8을 바꾼다
✅ 회고
우와왕 좀 헤맸지만 결국 해냈다 getNumericValue 잊지 말기~!!
replaceAll 정규표현식 전에도 본적 있었는데 오늘 한 번 정리하니까 편하다 나중에 분명 쓸 일 많을 것 같다
'코딩테스트 스터디' 카테고리의 다른 글
코딩테스트 연습 - 가까운 수 (JAVA) (0) | 2023.03.08 |
---|---|
코딩테스트 연습 - 진료순서 정하기 (JAVA) (0) | 2023.03.03 |
코딩테스트 연습 - 주사위의 개수 (JAVA) (1) | 2023.03.02 |
코딩테스트 연습 - 대문자와 소문자 (JAVA) (0) | 2023.03.02 |
코딩테스트 연습 - 가위 바위 보 (JAVA) (0) | 2023.03.02 |