[프로그래머스] 체육복(자바)

geesuee·2021년 10월 7일
0
post-thumbnail

알고리즘 문제 풀이를 블로그에 올리는 이유는 풀이, 코드를 기록하기 위함이니
앞으로 문제를 다 긁어오기보다 링크만 두고 풀이가 잘 보이도록 포스팅 할 예정입니다!

📄 문제

[프로그래머스] 체육복


👩‍💻 풀이

1. 문제 이해

이 문제는 체육복을 도난 당한 학생과, 여벌의 체육복을 가진 학생이 조건에 맞게 체육복을 주고 받아
체육복을 입을 수 있는 최대 학생 수를 구하는 문제이다.
조건 1) 여벌 체육복이 있는 학생이 체육복을 도난 당한 경우, 본인의 여벌 체육복을 착용한다.
조건 2) 체육복은 자기보다 한 사이즈 작거나 한 사이즈 큰 경우에만 빌릴 수 있다.


2. 풀이

import java.util.Arrays;

public class Solution {

    public static void main(String[] args) {
        int n = 3;
        int[] lost = {1,2};
        int[] reserve = {2,3};

        System.out.println(solution(n, lost, reserve));
    }

    public static int solution(int n, int[] lost, int[] reserve) {
        Arrays.sort(lost);
        Arrays.sort(reserve);

        int answer = n - lost.length;
        int llen = lost.length;
        int rlen = reserve.length;

        for(int i = 0; i < llen; i++) {
            for(int j = 0; j < rlen; j++) {
                if(lost[i] == reserve[j]) {
                    answer++;
                    reserve[j] = -100;
                    lost[i] = -100;
                    break;
                }
            }
        }

        for(int l : lost) {
            for(int i = 0; i < rlen; i++) {
                if(l == reserve[i]-1 || l == reserve[i]+1) {
                    answer += 1;
                    reserve[i] = -1;
                    break;
                }
            }
        }

        return answer;
    }
}
profile
기록하는 오늘의 노력🌻

0개의 댓글