728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]

📍 [풀이 1️⃣ - 리스트]
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> answer = new ArrayList<>();
int min = arr[0];
for(int i = 1; i < arr.length; i++) {
min = Math.min(min,arr[i]);
}
for(int i : arr) {
if(i != min) answer.add(i);
}
if(answer.isEmpty()) answer.add(-1);
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
💡 접근법
- 작은 값을 제거하고 담을 리스트 생성
- 배열 순회하며 제일 작은 값 갱신
- min 제외 값 리스트에 담고 반환
- 이때, 리스트가 비었다면 -1 반환
✅ Math.min 활용
✅ 시간 복잡도 : O(n)
📍[풀이 2️⃣ - 스트림]
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int min = Arrays.stream(arr).min().getAsInt();
int[] result = Arrays.stream(arr)
.filter(x -> x != min)
.toArray();
return result.length == 0 ? new int[]{-1} : result;
}
}
✅Stream() 활용
✅ -1 반환을 바로 return에서 하기
✅ 훨씬 간결
📍[풀이 3️⃣ - 예외 먼저 처리]
class Solution {
public int[] solution(int[] arr) {
if (arr.length == 1) return new int[]{-1}; // 예외 처리
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] < min) min = arr[i];
}
int[] result = new int[arr.length - 1];
int idx = 0;
for (int num : arr) {
if (num != min) result[idx++] = num;
}
return result;
}
}
✅ 처음과 비슷해보이지만, 예외처리를 먼저 하는 것만으로도 효율성 ⬆️
💬 마무리
같은 문제를 다른 방식으로도 풀고, 단지 예외처리를 먼저 해주는 방법만으로도 효율성을 증가시킬 수 있다는 것이 놀랍고, 이런 사소한 것도 생각하는 법을 배운 것 같다.
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
| [프로그래머스|JAVA] 타겟 넘버 | ↕️ DFS 활용 | 간결 코드 (4) | 2025.08.24 |
|---|---|
| [프로그래머스|JAVA] 네트워크 | ↕️ DFS (깊이 우선 탐색) | 재귀적 방식 (0) | 2025.08.24 |
| [프로그래머스|JAVA] 문자열 내 마음대로 정렬하기 | Comparator 사용 ⭕️ | @Override 활용 | 풀이법 2️⃣가지 | 스트림 ⭕️❌ (0) | 2025.08.24 |
| [프로그래머스|JAVA] 스킬 트리 🌲 | 트리 순회 방식 | 선형 탐색 (0) | 2025.08.24 |
| [프로그래머스|JAVA] 프로세스 | Queue 활용 ⭕️ | 자세한 코드 흐름 설명 💬 (0) | 2025.08.24 |
