ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • git
  • reactjs
  • dfs
  • HashMap
  • React
  • java
  • entrySet
  • BFS
  • Queue
  • greedy
  • 해시
  • 백준
  • 깃
  • 스택/큐
  • stack
  • Arrays.sort()
  • sort
  • compareTo()
  • getOrDefault
  • 안드로이드
  • Android
  • kotiln
  • 프로그래머스 Lv.2
  • PriorityQueue
  • DP
  • 깃허브
  • Comparator
  • 코틀린
  • git bash
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 : 제일 작은 수 제거하기

2022. 1. 31. 01:18

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

 

코딩테스트 연습 - 제일 작은 수 제거하기

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

programmers.co.kr

풀이

배열을 차례대로 비교해서 작은 수(tmp)의 위치를 position에 저장해둔다.
배열끝까지 반복문이 끝나고나면 해당 위치의 원소를 삭제한다...는 삭제할수 없으니까
해당 위치의 원소가 아닌 배열들만 list에 add한다.
list 크기가 0 이면 배열에 -1을 넣어 리턴한다.

import java.util.ArrayList; 

class Solution {
    public int[] solution(int[] arr) {
        ArrayList<Integer> list = new ArrayList<> ();
        int tmp = arr[0];
        int position = 0;
        for (int i = 0; i<arr.length ; i++){
            if (arr[i]< tmp){
                tmp = arr[i];
                position = i;
            }
        }
        for (int i=0;i<arr.length;i++){
            if(i!=position) list.add(arr[i]);
        }
        
        int[] answer;
        if(list.size() == 0){
            answer = new int[1];
            answer[0] = -1;
        }
        else{
            answer = new int[list.size()];
            for (int i=0;i<list.size();i++){
                answer[i]= list.get(i);
            }   
        }
        return answer;
    }
}

 

다른사람풀이

확실히 스트림을 사용하면 코드의 가독성은 좋아지는 것 같아서 가져와봤다.
min()으로 최소값을 구해서 filter()로 최소값을 제외한 원소를 리턴해준다.

import java.util.Arrays;
import java.util.stream.Stream;
import java.util.List;
import java.util.ArrayList;

class Solution {
  public int[] solution(int[] arr) {
      if (arr.length <= 1) return new int[]{ -1 };
      int min = Arrays.stream(arr).min().getAsInt();
      return Arrays.stream(arr).filter(i -> i != min).toArray();
  }
}
저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 : 두 개 뽑아서 더하기  (0) 2022.01.31
[Java] 프로그래머스 : 자연수 뒤집어 배열로 만들기  (0) 2022.01.31
[Java] 프로그래머스 : 같은 숫자는 싫어  (0) 2022.01.31
[JAVA] 프로그래머스 : 나누어 떨어지는 숫자 배열  (0) 2022.01.31
[JAVA] 프로그래머스 : 자릿수 더하기  (0) 2022.01.21
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 두 개 뽑아서 더하기
    • [Java] 프로그래머스 : 자연수 뒤집어 배열로 만들기
    • [Java] 프로그래머스 : 같은 숫자는 싫어
    • [JAVA] 프로그래머스 : 나누어 떨어지는 숫자 배열
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바