본문 바로가기
프로그래머스

[프로그래머스] 문자열 정렬하기(레벨 0)

by 소금_msg 2022. 11. 16.

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문만 쓰는것 같아서 약간 반성하면서도...

역시익숙한게 좋은거 아닐까.. 이런생각