본문 바로가기

알고리즘/Lv. 1

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

728x90

난이도 : Lv. 1

풀이일 : 2412161

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제


풀이 코드

class Solution {
    public int[] solution(int[] arr) {
        if (arr.length < 2) { // arr 길이 1일 때
            return new int[] {-1};
        }
        
        int idx = 0; // 가장 작은 수 인덱스
        int[] answer = new int[arr.length - 1];
        
        // 가장 작은 수 탐색
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < arr[idx]) {
                idx = i;
            }
        }
        
        // 가장 작은 수 제외 나머지 answer 추가
        for (int i = 0; i < arr.length; i++) {
            if (i != idx) {
                answer[i < idx ? i : i - 1] = arr[i];
            }
        }
        
        return answer;
    }
}
  • arr 길이가 1이라면 [-1]을 반환
  • idx : 배열의 가장 작은 수 인덱스를 저장할 변수
  • answer : 가장 작은 수를 제외한 숫자들을 저장할 배열
  • 가장 작은 수 탐색 : 배열을 순회하며 가장 작은 수의 인덱스를 찾아 저장
  • 가장 작은 수 제외 나머지 answer 추가 : idx를 제외한 나머지 인덱스의 값들을 answer에 추가

제출 결과

 


느낀점

  • 파이썬으로는 금방 풀었는데 자바로는 조금 걸렸다.
  • 자바는 선언할 때나 삼항 연산자 사용할 때 런타임 에러가 자주 나서 잘 안 느는 기분이 든다.