새소식

알고리즘 문제풀이/프로그래머스

[최소값 찾기] level1 프로그래머스 제일 작은 수 제거하기 자바 풀이

  • -

프로그래머스 연습문제 제일 작은 수 제거하기 자바 풀이

문제 정리

  1. 주어진 배열에서 가장 작은 수를 제거한 배열을 리턴하여라.
  2. 배열에 숫자가 하나밖에 없다면 -1을 담은 배열을 리턴하여라.
  3. 배열에 주어진 수는 모두 다르다


문제 풀이

배열을 오름차순이나 내림차순으로 정렬해서 제거하면 안됩니다.
주어진 원소 순서대로 출력해야 합니다.

  1. 가장 작은 수의 인덱스를 찾습니다.
  2. 그 인덱스의 수만 빼고 새로운 배열에 숫자를 모두 넣습니다. 그러면 원래 순서대로 들어가게 됩니다.


문제 풀이

class Solution { public static void main(String[] args){ int[] arr = {4,3,2,1}; int[] arr2 = {10}; // debug int[] ans = solution(arr); for(int i=0; i<ans.length; i++) System.out.print(ans[i] + " "); System.out.println(); } public static int[] solution(int[] arr) { if(arr.length == 1){ int[] ans = {-1}; return ans; } int min = Integer.MAX_VALUE; int idx = 0; for(int i=0; i<arr.length; i++){ if(min > arr[i]){ idx = i; min = arr[i]; } } int len = arr.length; int[] ans = new int[len-1]; int i = 0; int j = 0; // 가장 작은 수의 인덱스인 idx의 수만 빼고 모두 넣는다 while(j < len-1){ if(idx != i){ ans[j] = arr[i]; j++; } i++; } return ans; } }
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.