[프로그래머스] 체육복 JAVA 풀이

권용환·2021년 8월 23일
0

programmers_level1

목록 보기
11/14
post-thumbnail

문제 바로가기

나의 풀이

int 배열의 삭제가 불가능해서 삭제해주고 싶은 값은 -10이라는 전혀 관계없는 수를 넣어주긴 했는데 좋은 과정은 아닌듯하다. 그냥 이 문제만을 풀기위한 방식이랄까...

또한 find 메서드를 좀 더 리팩토링하면 코드의 반복이 줄어들어 훨씬 좋은 풀이를 만들 수 있을 것 같다.

import java.util.*;

class Solution {
    public static int solution(int n, int[] lost, int[] reserve) {
        int answer = lost.length;
        Arrays.sort(reserve);
        Arrays.sort(lost);
        for (int i = 0; i < reserve.length; i++) {
            if (find(lost, reserve[i])) {
                answer -= 1;
                reserve[i] = -10;
            }
        }
        for (int i = 0; i < reserve.length; i++) {
            if (find(lost, reserve[i] - 1)) {
                answer -= 1;
                reserve[i] = -10;
            } else if (find(lost, reserve[i] + 1)) {
                answer -= 1;
                reserve[i] = 10;
            }
        }
        return n - answer;
    }

    public static boolean find(int[] arr, int i) {
        for (int j = 0; j < arr.length; j++) {
            if (arr[j] == i) {
                arr[j] = -10;
                return true;
            }
        }
        return false;
    }
}
profile
마구 낙서하는 블로그입니다

0개의 댓글