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

Walter Mitty·2022년 10월 29일
0

Algorithm

목록 보기
22/29

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


제한사항
1 ≤ my_string의 길이 ≤ 100
my_string에는 숫자가 한 개 이상 포함되어 있습니다.
my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.


입출력 예

my_stringresult
"hi12392"[1, 2, 2, 3, 9]
"p2o4i8gj2"[2, 2, 4, 8]
"abcde0"[0]

입출력 예 설명
입출력 예 #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 합니다.

나의 풀이

import java.util.*;
class Solution {
    public int[] solution(String my_string) {
        String str = my_string.replaceAll("[^0-9]","");
        int[] answer = new int[str.length()];
        for(int i=0; i<=str.length()-1; i++) {
            answer[i] = str.charAt(i) - 48;
            //48이 0의 아스키 코드인거임
            //그리고 charAt을 해도 어차피 answer이 int 타입 배열에 -48로 연산하면서 char이 int로 자동형변환 돼서 (int)를 안 붙여도 된다.
        }
        
        Arrays.sort(answer); //.sort()의 반환 값이 void라 정렬만 해준다.
        //여기서 answer을 정렬해주고 return에는 변환한 answer을 넣어 값을 출력해주면된다.
        return answer;
    }
}


YJ님 풀이

import java.util.Arrays;

class Solution {
     public int[] solution(String my_string) {

        my_string = my_string.replaceAll("[^0-9]", "");
        int[] answer = new int[my_string.length()];

        for (int i = 0; i <= my_string.length()-1; i++) {
            answer[i] = Integer.parseInt(my_string.substring(i, i+1));
        }

        Arrays.sort(answer);
         
        return answer;
    }
}

CJ님 풀이

import java.util.Arrays;

class Solution {
    public int[] solution(String my_string) {
        
        StringBuilder sb = new StringBuilder();
        
        for(int i = 0; i < my_string.length(); i++) {
            if(my_string.charAt(i) < 65) {
                sb.append(my_string.charAt(i));
            }
        }
        
        int[] answer = new int[sb.length()];
        
        for(int i = 0; i < sb.length(); i++) {
            answer[i] = (sb.charAt(i)-48);
        }
        
        Arrays.sort(answer);
        
        return answer;
    }
}

2개의 댓글

comment-user-thumbnail
2022년 10월 29일

리턴 타입은 찾아보지 않으면 알기가 힘들어요~
문제 풀기 위한 함수를 사용하는 것도 좋지만, 함수의 원형을 검색하고 사용하는 습관을 만들면 좋을 것 같아요!

1개의 답글