개발 공부/코딩테스트 연습

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

빵다희 2024. 11. 23. 23:12

❓문제설명

https://school.programmers.co.kr/learn/courses/30/lessons/120911

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 0 < my_string 길이 < 100

입출력 예

my_string result
"Bcad" "abcd"
"heLLo" "ehllo"
"Python" "hnopty"

 


 

 

입출력 예 #1

  • "Bcad"를 모두 소문자로 바꾸면 "bcad"이고 이를 알파벳 순으로 정렬하면 "abcd"입니다.

입출력 예 #2

  • "heLLo"를 모두 소문자로 바꾸면 "hello"이고 이를 알파벳 순으로 정렬하면 "ehllo"입니다.

입출력 예 #3

  • "Python"를 모두 소문자로 바꾸면 "python"이고 이를 알파벳 순으로 정렬하면 "hnopty"입니다.

🔍문제해석

어떤걸 풀어야 할까?

1. 어떤 문자열이 주어지면 그 문자열을 모두 소문자로 변경하고, 알파벳 순서대로 정렬하라.


🧐문제풀이

  • 문제 풀이 구상

Character클래스에 대문자를 소문자로 변환하는 함수가 있다. toLowerCase() 

이걸 이용하여 소문자로 변환한 char 객체들을 list에 넣고 sort를 하여 문제를 풀기로 하였다.


!제출코드

  1. 한 글자씩 소문자로 변환하여 list에 담는다.
  2. 오름차순으로 정렬한다.
  3. 반복문을 돌면며 원소들을 합한다.
import java.util.*;

class Solution {
    public String solution(String my_string) {
        
        String answer = "";
        List<Character> list = new ArrayList<>();
        
        for(char c : my_string.toCharArray()){
            list.add(Character.toLowerCase(c));
        }
        
        Collections.sort(list);
        
        for(char c : list){
            answer += c;
        }
        
        return answer;
    }
}

 


➕ 참고할 만한 다른 풀이

비슷한 방법이지만 좀 더 간단하게 풀이했던 코드를 발견하였다.

https://school.programmers.co.kr/learn/courses/30/lessons/120911/solution_groups?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

바로 문제로 주어진 문자열 전체를 소문자로 바꾼 뒤, char 배열로 만들어 정렬을 하는 것이다.

이렇게 코드를 짜면 리스트를 사용하는 부분은 생략이 가능하다.

import java.util.*;

class Solution {
    public String solution(String my_string) {
    
        char[] c = my_string.toLowerCase().toCharArray();
        Arrays.sort(c);
        return new String(c);
    }
}
728x90
반응형