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

최혜원·2023년 6월 13일
2

Algorithm

목록 보기
3/3

📍문제설명

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

📍나의풀이

import java.util.Arrays;

class Solution3 {
    public int[] solution(String my_string) {
        //
        my_string = my_string.replaceAll("[a-z]", "");

        int[] answer = new int[my_string.length()];

        for(int i = 0; i < my_string.length(); i++)
        {
            //숫자로 된 char를 int로 변경
            answer[i] = Character.getNumericValue(my_string.charAt(i));
            //System.out.println(my_string.charAt(i));
        }
        //System.out.println(Arrays.toString(answer));
        Arrays.sort(answer);

        return answer;

    }
    public static void main(String[] args) {
        Solution3 s = new Solution3();
        System.out.println(Arrays.toString(s.solution("hi12392")));
    }
}

📍기억할것

  • 정규표현식 : my_string에는 소문자와 숫자로만 이루어져 있다는 제한 사항을 조건으로 정규표현식을 사용
  • 문자(char)를 숫자(int)로 변환하는 함수 : getNumericValue()
  • 문자열에서 특정 인덱스의 값을 문자(Char)로 변환하는 함수 : charAt()
  • 배열을 오름차순으로 정렬하는 함수 : Arrays.sort() / Collections.sort()
    배열을 정렬할 때는 Arrays.sort(), 리스트를 정렬할 때는 Collections.sort()를 사용
  • 문자열 내에 특정문자 및 정규표현식에 해당하는 문자를 치환하는 함수 : replaceAll()
    정규표현식을 이용하여 숫자가 아닌 문자들을 빈값으로 치환

📍 숫자로 된 char를 int로 변경하는 방법
보통 int로 캐스팅을 많이하는데, 명시적 타입 캐스팅을 하게 되었을 때 char값은 아스키코드값으로 변경되기 때문에 1이 아닌 49로 변경되게 된다.그래서 숫자를 변경할때는 번거롭게 '0' 또는 48을 빼주는 형태로 숫자로 변환을 해왔었는데 Character wrapper class에 좋은 메소드가 있었다.getNumericValue() 메소드를 사용하면 숫자로 된 char형을 숫자형태 그대로 반환해준다.

char c = '1';
int result1 = (int)c;
//49
int result2 = Character.getNumericValue(c);
//1
profile
어제보다 나은 오늘

0개의 댓글