본문 바로가기
algorithm

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

by skysline 2023. 3. 3.
반응형

문자열 정렬하기 (1)

문제 설명

문자열 my_string이 매개변수로 주어질 때, 

my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

입출력 예


입출력 예 #1

  • "hi12392"에 있는 숫자 1, 2, 3, 9, 2를 오름차순 정렬한 [1, 2, 2, 3, 9]를 return 합니다.

입출력 예 #2

  • "p2o4i8gj2"에 있는 숫자 2, 4, 8, 2를 오름차순 정렬한 [2, 2, 4, 8]을 return 합니다.

입출력 예 #3

  • "abcde0"에 있는 숫자 0을 오름차순 정렬한 [0]을 return 합니다.

java code

import java.util.Arrays;
class Solution {
    public int[] solution(String my_string) {
        
        String instr = my_string.replaceAll("[^0-9]","");
        int[] answer = new int[instr.length()];
        for (int i = 0; i < answer.length; i++) {
            answer[i] = Character.getNumericValue(instr.charAt(i));
        }
        Arrays.sort(answer);
        return answer;
    }
}

1. String instr = my_string.replaceAll("[^0-9]","");

  • my_string에서 숫자가 아닌 문자를 모두 제거하여 instr 문자열에 저장합니다. 여기서 replaceAll 메서드는 문자열에서 정규표현식 패턴에 해당하는 문자열을 다른 문자열로 대체하는 메서드입니다. [0-9]는 0부터 9까지의 숫자를 나타내는 정규표현식 패턴이고, ^는 부정(negation)을 의미하므로 [^0-9]는 숫자가 아닌 문자를 나타냅니다.

2. int[] answer = new int[instr.length()];

  • instr 문자열의 길이만큼 정수 배열 answer를 생성합니다.

3. answer[i] = Character.getNumericValue(instr.charAt(i));

  • instr 문자열에서 각 문자를 하나씩 읽어서 해당 문자가 나타내는 숫자를 answer 배열에 저장합니다. charAt 메서드는 문자열에서 해당 위치의 문자를 반환하며, getNumericValue 메서드는 해당 문자가 나타내는 숫자를 반환합니다.

4. Arrays.sort(answer);

  • answer 배열을 오름차순으로 정렬합니다.

python code

import re
def solution(my_string):
    s = re.sub("[^0-9]","",my_string)
    answer = []
    for i in s:
        answer.append(int(i))
    answer.sort()
    return answer

자바는 배열의 길이를 맞춰줘야 하고 타입을 신경써줘야한다.

반응형

댓글