[알고리즘/프로그래머스] 12935. 제일 작은 수 제거하기

jae_s_a·2022년 9월 27일
0

프로그래머스

목록 보기
16/26

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12935


제일 작은 수 제거하기

문제 설명

  • 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.
  • 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
  • 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건

  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

입출력 예시


이 문제는 3번이나 코드를 갈아엎었던 문제로 생각보다 풀리지 않은 문제이다.

입력값을 정렬 후 첫 번째 원소(제일 작은 값)이 만날 때 continue를 처리해주도록 했는데 이 방법으로 하게 될 경우 테스트케이스가 전부 실패처리가 된다.

결국 팀원에게 SOS를 요청했는데 팀원분은 정렬안하고 작은 값을 찾아서 풀었다고해서 정렬없이 처리를 해주었더니 5분만에 풀려버린... 허무했던(?) 문제였다.


import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        
        if(arr.length == 0) {
            return new int[]{-1};
        }

        List<Integer> list = new ArrayList<>();

        int min = arr[0];
        for (int i : arr) {
            if(i < min) {
                min = i;
            }
            list.add(i);
        }

        for (int i = 0; i < list.size(); i++) {
            int num = list.get(i);
            if(min == num) {
                list.remove(i);
            }
        }
        int[] answer = new int[list.size()];

        for (int i = answer.length - 1; i >= 0; i--) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}
profile
if not now, when

0개의 댓글