[백준] 1181번: 단어 정렬 - JAVA

2024. 9. 20. 01:15·알고리즘

[작성일: 2023. 10. 23]

 

https://www.acmicpc.net/problem/1181

 

 

풀이

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String[] strArr = new String[n];
        for (int i = 0; i < n; i++) {
            strArr[i] = sc.next();
        }

        Set<String> set = new HashSet<>();
        for (int j = 0; j < strArr.length; j++) {
            set.add(strArr[j]);
        }
        List<String> list = new ArrayList<>(set);

        Collections.sort(list, (a, b) -> {
            if (a.length() != b.length()) {
                return a.length() - b.length();
            } else {
                return a.compareTo(b);
            }
        });

        for (String str : list) {
            System.out.println(str);
        }
    }
}

 

처음에는 문자열을 입력받은 후 String 배열에 저장하고, 중복을 제거하기 위해 set에 다시 저장한다.

set은 중복을 허용하지 않지만 순서도 보장하지 않기 때문에 set에서 중복제거된 문장을 다시 ArrayList에 저장한다.

 

Collections.sort를 이용해서 중복제거된 문장들을 정렬해야 하는데 조건은

 

  1. 길이가 짧은 것부터
  2. 길이가 같으면 사전 순으로

 

위와 같으므로 우선 list의 a 문장과 b 문장의 길이를 비교해본다.

만약 a의 길이가 b의 길이보다 크면 양수, 작으면 음수, 같다면 0이 된다.

if에서 문장의 길이가 다른 경우 길이가 짧은 문자열을 먼저 오도록 정렬하게 된다.

 

길이가 같은 경우에는 compareTo를 사용해서 a와 b 문자열을 사전 순으로 비교한다.

마찬가지로 0을 반환하면 동일한 문자열, 양수를 반환하면 a가 b보다 사전 순으로 뒤에 오는 문자열, 음수를 반환하면 a가 b보다 사전 순으로 앞에 오는 문자열이라는 의미가 된다.

 

저작자표시 비영리 변경금지 (새창열림)
'알고리즘' 카테고리의 다른 글
  • [프로그래머스] 크레인 인형뽑기 게임 - JAVA
  • [프로그래머스] 실패율 - JAVA
  • [백준] 11650번: 좌표 정렬하기 - JAVA
  • [백준] 10989번: 수 정렬하기 3 - JAVA
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    MVC
    Swift
    Security
    의존성주입
    프로그래머스
    데이터베이스
    Database
    JPA
    객체
    성능최적화
    변수
    생성자
    자바
    다형성
    javascript
    html
    DB
    백준
    Spring Security
    최주호
    김영한
    HTTP
    자바스크립트
    spring
    jsp
    알고리즘
    게시판만들기
    스프링
    Java
    sql
  • hELLO· Designed By정상우.v4.10.0
뚜비
[백준] 1181번: 단어 정렬 - JAVA
상단으로

티스토리툴바