문자열 정렬하기(2)
https://school.programmers.co.kr/learn/courses/30/lessons/120911
1) 문제
영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때,
my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록
solution 함수를 완성해보세요.
제한사항
0 < my_string 길이 < 100
2) 예시
Result Table
my_string |
result |
"Bcad" |
"abcd" |
"heLLo" |
"ehllo" |
"Python" |
"hnopty" |
입출력 예 #1
"Bcad"를 모두 소문자로 바꾸면 "bcad"이고 이를 알파벳 순으로 정렬하면 "abcd"입니다.
입출력 예 #2
"heLLo"를 모두 소문자로 바꾸면 "hello"이고 이를 알파벳 순으로 정렬하면 "ehllo"입니다.
입출력 예 #3
"Python"를 모두 소문자로 바꾸면 "python"이고 이를 알파벳 순으로 정렬하면 "hnopty"입니다.
3) 풀이
1. 클래스 선언을 해줍니다
● class Solution {
클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.
2. 문자열 my_string을 매개변수로 하는 solution 메소드를 선언합니다.
solution은 문자열를 반환하므로 데이터타입을 String으로 합니다.
● public String solution(String my_string) {
3. my_string 문자열의 길이 제한사항을 확인하고, 올바르지 않을 경우 예외를 반환합니다.
● if(my_string.length() <= 0 || my_string.length() >= 100){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
4. 문자배열 c를 생성합니다.
c는 my_string 문자열을 toLowerCase() 메소드를 이용해서 소문자로 바꿔주고,
toCharArray() 메소드를 이용해서 문자배열로 바꿔줍니다.
그리고 Arrays.sort() 메소드를 이용하여 c 문자배열을 정렬합니다.
sort 메소드를 이용해서 정렬하면 알파벳순으로 자동정렬되게 됩니다.
문자배열인 c를 문자열로 반환해야하기 때문에 return newString(c)로 문자열로 변환하여 반환합니다.
● char[] c = my_string.toLowerCase().toCharArray();
Arrays.sort(c);
return new String(c);
}
}
4) 코드
import java.util.*;
class Solution {
public String solution(String my_string) {
if(my_string.length() <= 0 || my_string.length() >= 100){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
char[] c = my_string.toLowerCase().toCharArray();
Arrays.sort(c);
return new String(c);
}
}
5) 느낀점
처음 코드를 작성할 때,
char[] c = my_string.toLowerCase().toCharArray()가 아니라,
String lowerString = my_string.toLowerCase();
char[] c = lowerString.toCharArray();
라는 두줄로 만들었었는데, 한줄로 변경이 가능하다는 것을 알아내어 수정할 수 있었습니다.
두줄로 표현해도 되지만 스스로 생각하기엔 한줄로 표현하는게 가독성이 더 좋다고 판단하였습니다.