my_string은 숫자와 문자가 조합된 String 타입 문자열이다.
문자열의 길이만큼 반복문으로 문자인지 숫자인지 체크해주자.
추가 삭제에는 list가 편해서 사용했다.
문자인지 숫자인지 체크해주는 String의 c.matches 함수를 이용
오름차순 정렬에는 Collections.sort(리스트) 사용
리스트에 String 을 int로 파싱해서 넣을때
Integer.valueOf()를 사용했었는데 변환이 안되었다.
그래서 -'0' 해주어 변환했다.
import java.util.*;
class Solution {
public int[] solution(String my_string) {
List<Integer> intArr = new ArrayList<Integer>();
for(int i=0; i< my_string.length(); i++){
//charAt 리턴값이 char타입이라서 String.valueOf로 문자>문자열로 파싱
String str = String.valueOf(my_string.charAt(i));
// String의 .matches 함수로 숫자와 문자열을 구분해준다.
boolean isNumberic = str.matches("[+-]?\\d*(\\.\\d+)?");
if(isNumberic){ //true일 경우> 숫자일경우
intArr.add(my_string.charAt(i)-'0'); //list에 char> int로 변환해서 넣어준다.
}
}
Collections.sort(intArr); //오름차순 정렬
int[] answer = new int[intArr.size()]; //answer 배열 초기화
// 반복문으로 list에 넣었던 값을 answer 배열에 넣어주기
for(int i= 0; i < intArr.size(); i++){
answer[i] = intArr.get(i); //List에서 값 꺼낼때는 .get(인덱스)
}
return answer;
}
}
Integer.parseInt()는 String 타입만 인자로 받고
integer.valueOf()는 Integer(정수형 랩핑타입), String 타입만 인자로 받아서
나는 인자로 char타입을 넘겼기때문에 파싱이 안됐던 것이다.
(참고 블로그 출처)
https://junuuu.tistory.com/213
너무 for문만 쓰는것 같아서 약간 반성하면서도...
역시익숙한게 좋은거 아닐까.. 이런생각
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 가운데 글자 가져오기 (0) | 2022.11.28 |
---|---|
[프로그래머스] 정수 내림차순으로 배치하기 (0) | 2022.11.28 |
[프로그래머스] 두 수의 나눗셈 (0) | 2022.10.04 |
[프로그래머스] (java) 자연수 뒤집어 배열로 만들기 (0) | 2022.09.25 |
[프로그래머스] mysql Datetime 타입 컬럼 값 String 으로 형식 지정하기 (1) | 2022.09.25 |