99클럽 코테 스터디 3일차 TIL 문자열 내 마음대로 정렬하기

2024. 7. 25. 03:16·스터디/99클럽 코테 스터디 TIL

 

📝 문제

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

😢 sort()를 사용하지 않고 풀어보려 했으나 실패

import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public String[] solution(String[] strings, int n) {
        String[] answer = new String[strings.length];

        ArrayList<String> list = new ArrayList<>(Arrays.asList(strings));

        for (int i = 0; i < strings.length; i++) {
            answer[i] = list.get(0);

            int selectedIndex = 0;
            for (int j = 0; j < list.size(); j++) {
                if (answer[i].charAt(n) > list.get(j).charAt(n)) {
                    answer[i] = list.get(j);
                    selectedIndex = j;
                } else if (answer[i].charAt(n) == list.get(j).charAt(n)) {
                	// 사전적 순서대로 정렬
                }
            }

            list.remove(selectedIndex);
        }

        return answer;
    }
}

다음과 같이 sort()를 사용하지 않고 풀어보려  했으나 실패하였다.

n번째 원소가 다른 경우의 정렬은 ArrayList를 사용하여 쉽게 도달할 수 있었으나 

n번째 원소가 같은 경우에 사전적 순서대로 정렬 하기 위한 로직을 여러번 시도해도 좀처럼 풀리지 않았다.

많은 시간을 투자했기때문에 너무 아쉽지만 지금 수준에서는 시간낭비라고 생각되어 추후 다시 실력을 기르고 도전해봐야겠다.

🔥 sort()를 사용한 풀이 

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public String[] solution(String[] strings, int n) {
        Arrays.sort(strings);

        Arrays.sort(strings, new Comparator<>() {
            @Override
            public int compare(String s, String t1) {
                if (s.charAt(n) > t1.charAt(n)) {
                    return 1;
                } else if (s.charAt(n) == t1.charAt(n)) {
                    return 0;
                } else {
                    return -1;
                }
            }
        });

        return strings;
    }
}

1. n번째 원소가 동일하다면 사전적 순서대로 정렬되야 하므로 우선 전체 배열을 한번 소팅해준다.

2. Arrays.sort()를 사용하여 n번째 원소가 작을 수록 앞으로, 동일한 문자가 존재한다면 사전적 순서대로 정렬하도록 조건을 설정해준다.

'스터디 > 99클럽 코테 스터디 TIL' 카테고리의 다른 글

99클럽 코테 스터디 6일차 TIL 의상  (0) 2024.07.28
99클럽 코테 스터디 5일차 TIL 전화번호 목록  (0) 2024.07.26
99클럽 코테 스터디 4일차 TIL JadenCase 문자열 만들기  (0) 2024.07.25
99클럽 코테 스터디 2일차 TIL x만큼 간격이 있는 n개의 숫자  (2) 2024.07.23
99클럽 코테 스터디 1일차 TIL n^2 배열 자르기  (3) 2024.07.23
'스터디/99클럽 코테 스터디 TIL' 카테고리의 다른 글
  • 99클럽 코테 스터디 5일차 TIL 전화번호 목록
  • 99클럽 코테 스터디 4일차 TIL JadenCase 문자열 만들기
  • 99클럽 코테 스터디 2일차 TIL x만큼 간격이 있는 n개의 숫자
  • 99클럽 코테 스터디 1일차 TIL n^2 배열 자르기
Been
Been
  • Been
    Been
    Been
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 언어 (0)
        • Kotlin (0)
      • 안드로이드 (17)
      • iOS (3)
      • Git (1)
      • 스터디 (39)
        • 알고리즘 문제 풀이 (1)
        • 99클럽 코테 스터디 TIL (38)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java
    쓰기권한
    maxWidth
    Coroutines
    풀이실패
    안드로이드
    Androiod
    밑줄제거
    객체변환
    NSR
    깃
    99클럽
    WRITE EXTERNAL
    Git
    Android
    FragmentStateAdapter
    리싸이클러뷰
    EditText
    아이폰
    AndroidID
    RecyclerView
    자바
    코딩테스트준비
    개발자취업
    debugRuntimeClasspath
    nsl
    항해99
    IOS
    언더라인 제거
    TIL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Been
99클럽 코테 스터디 3일차 TIL 문자열 내 마음대로 정렬하기
상단으로

티스토리툴바