728x90
🔗 문제 링크
https://www.acmicpc.net/problem/10867
📌 문제 개요
N개의 정수가 주어졌을 때,
중복된 값을 제거한 후 오름차순으로 정렬하여 출력하는 문제
📌 접근 방법
- 입력값을 문자열로 받은 후 split()으로 분리
- Stream을 활용하여 데이터 처리
- distinct()로 중복 제거
- sorted()로 정렬 수행
- 최종 결과를 배열로 변환하여 출력
📌 핵심 아이디어
- Stream을 활용하면 중복 제거 + 정렬을 한 번에 처리 가능
- distinct() → 내부적으로 Set 구조 활용
- sorted() → 자동 오름차순 정렬
- 코드가 간결하고 가독성이 뛰어남
📌 전체 코드
package no_10867;
import java.io.*;
import java.util.*;
import java.util.stream.*;
public class No10867 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = Arrays.stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt)
.distinct()
.sorted()
.toArray();
StringBuilder sb = new StringBuilder();
for (int num : arr) {
sb.append(num).append(" ");
}
System.out.println(sb.toString().trim());
}
}
🧾 정리
- Stream을 활용하면 코드가 매우 간결해진다
- distinct()와 sorted() 조합으로 중복 제거 + 정렬을 동시에 해결 가능
- 코딩 테스트에서는 빠르고 효율적인 풀이 방법
- 단, 대용량 데이터에서는 성능을 고려한 방식 선택이 필요하다
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 백준 1924 2007년 JAVA 풀이 (구현, 시간복잡도) (0) | 2026.03.21 |
|---|---|
| [백준] 2822번 : 점수 계산 (JAVA) (0) | 2026.03.20 |
| [백준] 2161번 : 카드1 (JAVA) (0) | 2026.03.18 |
| [백준] 2740번 : 행렬 곱셈 (JAVA) (0) | 2026.03.17 |
| [백준] 24313번 : 알고리즘 수업 - 점근적 표기 1 (JAVA) (0) | 2026.03.16 |