[Java/Algorithm] List 오름차순

2023. 8. 24. 23:24·개발 ━━━━━/Java
반응형

// 주어진 arr 에 요소들을 주어진 정수 n 번째 글자를 기준으로 오름차순 정렬
// n 번째 글자가 같을 경우 사전순으로 정렬한다.

import java.util.*;

public class Main {
    public String[] solution(String[] arr, int n) {
        // 중복이 되었는지 안되었는지 판별하기 위한 플래그
        int flag = 0;
        
        // 기준 요소와 같으면 "" 빈 문자열로 초기화, 중복이 발견되었으니 flag = 1
        for(int i=0; i<arr.length-1; i++){
            for(int j=i+1; j<arr.length; j++){
                if(arr[i].equals(arr[j])){
                    arr[j] = "";
                    flag = 1;
                }
            }
            // 기준이 되었던 요소도 빈 문자열로, flag 초기화
            if(flag == 1){
                arr[i] = "";
                flag = 0;
            }
        }
        
        // sort 를 쓰기 위해서 list 로 변경
        List<String> list = new ArrayList<>(Arrays.asList(arr));
        list.removeAll(Arrays.asList(""));
        
        // 기본 sort 메서드는 기준을 커스텀하지 못하므로 오버라이드
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if(o1.charAt(n) > o2.charAt(n)){
                    return 1;
                }
                else if(o1.charAt(n) < o2.charAt(n)){
                    return -1;
                }
                // 비교 문자가 같을때 사전적인 순서로 비교
                else {
                    return o1.compareTo(o2);
                }
            }
        });

        String[] answer = list.toArray(new String[list.size()]);
        return answer;
    }

    public static void main(String[] args) {
        Main method = new Main();
        String[] arr = {"coke", "water", "glass", "dog", "dog", "yogurt", "vitamin"};
        int n = 2;
        System.out.println(Arrays.toString(method.solution(arr, n)));
    }
}

 

 

https://hianna.tistory.com/569

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=chltmddus23&logNo=221711806816 

https://www.techiedelight.com/ko/find-index-of-element-list-java/

반응형

'개발 ━━━━━ > Java' 카테고리의 다른 글

[Java] 문자열 배열에 String 집어 넣기  (0) 2023.08.25
[Java] String <-> Int 형변환  (0) 2023.08.25
[Java] 객체 지향 - 상속, 오버라이딩  (1) 2023.08.24
[Java] 객체 지향 - 클래스, 인스턴스, 생성자  (1) 2023.08.19
[Java] 기초 문법 - 컬렉션 (Collection)  (0) 2023.08.16
'개발 ━━━━━/Java' 카테고리의 다른 글
  • [Java] 문자열 배열에 String 집어 넣기
  • [Java] String <-> Int 형변환
  • [Java] 객체 지향 - 상속, 오버라이딩
  • [Java] 객체 지향 - 클래스, 인스턴스, 생성자
GukJang
GukJang
•  ⌘ ⌥ •
    반응형
  • GukJang
    SPACE
    GukJang
  • 전체
    오늘
    어제
    • Blog (73)
      • 개발 ━━━━━ (68)
        • Java (14)
        • C++ (1)
        • HTML (1)
        • Spring(boot) (7)
        • Dev (9)
        • SQL (1)
        • CS (2)
        • Git (1)
        • Troubleshoot (14)
        • Algorithm (2)
        • Definition (1)
        • Dev Life (2)
        • TIL (7)
        • 항해 (6)
      • 공돌 ━━━━━ (4)
        • 플젝 (2)
        • 장비 (1)
        • 부품 (1)
      • 독서 ━━━━━ (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    마이크로파이썬
    오픈소스 기여
    EC2
    알고리즘
    Python
    mysql
    항해99
    electron-builder
    micropython
    CI CD
    백준
    docker
    github actions
    자바
    spring
    docker volume
    Java
    AWS
    SpringBoot
    사전 스터디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
GukJang
[Java/Algorithm] List 오름차순
상단으로

티스토리툴바