[프로그래머스|JAVA] 제일 작은 수 제거하기 | 3️⃣가지 풀이법 | stream 및 예외 먼저 처리 등 💬

2025. 8. 24. 16:03·💻코딩/💡Programmers
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
'💻코딩/💡Programmers' 카테고리의 다른 글
  • [프로그래머스|JAVA] 타겟 넘버 | ↕️ DFS 활용 | 간결 코드
  • [프로그래머스|JAVA] 네트워크 | ↕️ DFS (깊이 우선 탐색) | 재귀적 방식
  • [프로그래머스|JAVA] 문자열 내 마음대로 정렬하기 | Comparator 사용 ⭕️ | @Override 활용 | 풀이법 2️⃣가지 | 스트림 ⭕️❌
  • [프로그래머스|JAVA] 스킬 트리 🌲 | 트리 순회 방식 | 선형 탐색
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    github
    프로그래머스
    네트워크
    백엔드
    트랜잭션
    S3
    프로그래머스 #JAVA
    동시성제어
    Java
    map
    Set
    Stream
    알고리즘
    자바
    데브코스
    GIT
    baekjoon
    자료구조
    코딩테스트
    AWS
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[프로그래머스|JAVA] 제일 작은 수 제거하기 | 3️⃣가지 풀이법 | stream 및 예외 먼저 처리 등 💬
상단으로

티스토리툴바