99클럽 코테 스터디 3일차 TIL - [프로그래머스] 문자열 내 마음대로 정렬하기 (Java)

seri·2024년 7월 24일
0

코딩테스트 챌린지

목록 보기
28/62

📌 오늘의 학습 키워드

[프로그래머스] 문자열 내 마음대로 정렬하기 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/12915

📌 공부한 내용 본인의 언어로 정리하기

문제 탐색하기

입력 : String[] strings, int n (1 ≤ strings.length ≤ 50, strings 원소는 1 이상, 100 이하인 문자열)
출력 : 정렬된 strings

가능한 시간복잡도

O(n)

알고리즘 선택

구현

📌 코드 설계하기

  1. Arrays.sort을 이용해 strings를 정렬하는데, Comparator을 재설정한다.
  2. char1, char2에 charAt을 이용해 strings의 인덱스(n)의 문자로 초기화한다.
  3. char1 == char2 일때는 compareTo를 이용해 사전순으로 비교해 정렬한다.
  4. 이외에는 char1, char2의 비교를 통해 정렬한다.
  5. 정렬된 strings를 출력한다.

📌 오늘의 회고

어떤 문제가 있었고, 나는 어떤 시도를 했는지

Comparator 조건을 잘못 설정해 테스트 케이스를 통과하지 못했다. Comparator 조건을 수정했다.

어떻게 해결했는지

char1 == char2 일때는 사전순 비교하도록 compareTo를 사용했다.

무엇을 새롭게 알았는지

사전순 비교에는 compareTo가 사용된다.

내일 학습할 것은 무엇인지

구현

📌 정답 코드

import java.util.*;

class Solution {
    public String[] solution(String[] strings, int n) {
        Arrays.sort(strings, new Comparator<String>() {
            public int compare(String s1, String s2) {
                char char1 = s1.charAt(n);
                char char2 = s2.charAt(n);
                
                if (char1 == char2) {
                    return s1.compareTo(s2);
                } else {
                    return char1 - char2;
                }
            }
        });
        return strings;
    }
}
profile
꾸준히 정진하며 나아가기

0개의 댓글