ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 99클럽 코테 스터디 1일차 TIL, 문자열 내 마음대로 정렬하기(프로그래머스)
    카테고리 없음 2024. 4. 6. 21:39

    2024년 4월 6일

    프로그래머스 - 문자열 내 마음대로 정렬하기

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

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    import java.util.*;
    class Solution {
        public String[] solution(String[] strings, int n) {
            Arrays.sort(strings, (x, y)->x.charAt(n) == y.charAt(n) ? x.compareTo(y) : x.charAt(n)-y.charAt(n));
            return strings;
        }
    }
    

    문제 정의

    주어진 문자열 배열에서 n번째의 글자로 문자열을 비교해서 정렬하는 문제

    (n번째의 글자가 같으면, 사전 순으로 정렬한다.)

    시도한 방법

    시도1) Comparator 선언하여 정렬 함수 정의

     예시)
     Arrays.sort(strings, new Comparator<int[]>() {
               @Override
                public int compare(int[] o1, int[] o2) {
                    return o1[1] - o2[1];
                }
            });
    

    1차적인 풀이로는 위의 예시처럼 Arrays.sort 함수 안에 Comparator 함수를 정의해서 풀어가려고 했었다. 하지만 정렬 기준이 단순하기 때문에 람다 형식으로도 가능할 것이라 생각했고, 시도2의 방법을 택했다.

    시도2) Comparator 선언하여 정렬 함수를 람다로 선언

     Arrays.sort(strings, (x, y)->x.charAt(n) == y.charAt(n) ? x.compareTo(y) : x.charAt(n)-y.charAt(n));
    

    람다 형식을 사용하면서 코드가 줄고, 깔끔해졌다. n번째의 글자가 같은 경우에는 String 클래스에 속한 compareTo 함수를 사용하였다.

     

    회고

    Comparator 선언하는 방식이 자꾸 헷갈려서 검색을 하게 된다. 계속 쓰다 보면 익숙해지겠지… ㅎㅎ

    람다 형식도 많이 사용해 보지 않아서 익숙하지 않은데, 문제를 많이 풀면서 최대한 많이 활용해서 사용해보아야겠다.

    댓글

Designed by Tistory.