[백준] 단어 정렬
2025. 7. 29. 15:18ㆍ프로그래밍 언어/Java
문제
https://www.acmicpc.net/problem/1181
백준 문제 1181번 solved.ac 기준 실버 5문제이다.
접근 방식
시간을 2초씩 준 것 널널하다고 생각을 하였다.
일단 한번 Arrays.sort() 을 진행을 해보았다.
1차 소스코드
더보기

import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] str = new String[n];
for( int i = 0; i < n; i++ ) {
str[i] = sc.nextLine();
}
str = Arrays.stream(str).distinct().sorted().toArray(String[]::new);
Arrays.stream(str).forEach(System.out::println);
}
}
결과

예시를 기준으로는 단어가 알파벳 순서로 정렬이 된 것을 확인 할 수 있다.
이제 글자 길이 순서대로 정렬을 하면된다고 생각을 하였다.
글자 길이가 같다면 글자 순서를 바꾸지 않을 태니 문제가 없다고 생각하였다.
2차 소스코드
더보기

import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] str = new String[n];
for( int i = 0; i < n; i++ ) {
str[i] = sc.nextLine();
}
str = Arrays.stream(str).distinct().sorted().toArray(String[]::new);
Arrays.sort(str, (String str1, String str2) -> str1.length() - str2.length());
Arrays.stream(str).forEach(System.out::println);
}
}
결과

예상한대로 잘 나왔다.
마무리
해당 글을 적는 것은 생각대로 접근하고 소스 코드 만드는 방법을 몰라서 기록을 하기 위함이다.
나중에 까먹어도 찾기가 쉬워지도록 적어둔다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 키오스크 과제 리펙토링을 해보자. (0) | 2025.01.17 |
---|---|
[Java] 리펙토링 전 문제 점을 코드 리뷰 하면서 찾아보자. (1) | 2025.01.16 |
[Java] 추상 클래스에 대해서.araboza (2) | 2025.01.15 |
[트러블 슈팅] 키오스크 과제 with Java (1) | 2025.01.13 |
[Java] 내일배움캠프 계산기 과제 분석을 해보자. (1) | 2025.01.10 |