문자열 내 마음대로 정렬하기

2024. 7. 17. 09:58·(Java)코테연습

문제 설명

 

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

 

 

 

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

public class Main {
    public static void main(String[] args) {
        String[] strings = {"sun", "bed", "car"};
        int n = 1;

        // 정렬 기준을 정의하는 Comparator
        Comparator comparator = new Comparator() {
            @Override
            public int compare(String s1, String s2) {
                // n번째 문자를 기준으로 비교
                char c1 = s1.charAt(n);
                char c2 = s2.charAt(n);
                if (c1 == c2) {
                    // n번째 문자가 같으면 전체 문자열로 비교
                    return s1.compareTo(s2);
                }
                return Character.compare(c1, c2);
            }
        };

        // 배열 정렬
        Arrays.sort(strings, comparator);

        // 정렬된 배열 출력
        System.out.println(Arrays.toString(strings));
    }
}

 

코드 해석

 

정렬 로직:

  • Arrays.sort 메서드를 사용하여 strings 배열을 정렬합니다.
  • 정렬 기준을 정의하기 위해 익명 Comparator<String> 클래스를 구현합니다.
  • compare 메서드는 두 문자열 s1과 s2를 비교합니다.
  • s1.charAt(n)과 s2.charAt(n)을 통해 문자열의 n번째 문자를 추출합니다.
  • c1과 c2가 같으면, s1과 s2를 사전순으로 비교합니다.
  • c1과 c2가 다르면, 해당 문자를 비교하여 정렬 순서를 결정합니다.
반응형

'(Java)코테연습' 카테고리의 다른 글

두 개 뽑아서 더하기  (1) 2024.07.19
k번째수  (1) 2024.07.18
숫자 문자열과 영단어  (0) 2024.07.16
시저암호  (1) 2024.07.15
영어 단어 맞추기  (0) 2024.07.12
'(Java)코테연습' 카테고리의 다른 글
  • 두 개 뽑아서 더하기
  • k번째수
  • 숫자 문자열과 영단어
  • 시저암호
wanduek
wanduek
차근차근 쌓아가는 지식
  • wanduek
    완득님의 블로그
    wanduek
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • Onboarding (0)
      • 아티클 (0)
      • SQL 정리 (20)
      • 웹개발 기초정리(프엔) (9)
      • (Java)코테연습 (27)
      • 미니 프로젝트 (9)
        • 자기소개 웹페이지 (5)
        • 수강생 관리 프로그램(Java) (4)
      • GitHub 오류 및 명령어 정리 (7)
      • Java 문법정리 (Array부터) (17)
      • Java로 이용한 기능 (2)
      • Web지식 (12)
        • web3 (6)
        • 네트워크 (6)
      • 인텔리제이 오류 대처 방법 (1)
      • Computer Science (7)
      • Spring (38)
        • 미니 프로젝트(배달) (2)
        • Spring 트러블 슈팅 (3)
        • QueryDSL, JPQL (3)
        • 미니 프로젝트(뉴스피드) (5)
        • 미니 프로젝트(Trello) (2)
      • 개발자 밋업 (1)
      • Docker (2)
      • Redis (1)
      • AWS (6)
        • AWS 트러블 슈팅 (2)
      • Jmeter (2)
      • 우리 지금 만나 (12)
      • Kafka (1)
      • RabbitMQ (2)
        • 트러블 슈팅 (1)
      • STOMP (2)
      • WebSocket (3)
        • 트러블 슈팅 (2)
      • Node.js (2)
      • Elastic Search (2)
      • Nginx (1)
      • 퍼블엘 (2)
      • openresty (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    ㅏㄷ
    github
    git
    SQL
    groupby
    백앤드개발자 #초심자
    json
    fetch
    jquery
    where
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
wanduek
문자열 내 마음대로 정렬하기
상단으로

티스토리툴바