프로그래머스

프로그래머스 - 체육복

yanJuicy 2022. 11. 25. 01:17
반응형

문제

링크

풀이

앞 사람 또는 뒤 사람에게 체육복을 빌린다.
빌려준 사람은 reserve 배열에서 삭제한다.
삭제를 편하게 하기 위해서 배열 대신 HashSet을 사용했다.

코드

java

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

public class Solution {

    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n;

        Set<Integer> reserveSet = new HashSet<>();
        reserveSet.addAll(Arrays.stream(reserve).boxed().collect(Collectors.toList()));

        Set<Integer> lostSet = new HashSet<>();
        lostSet.addAll(Arrays.stream(lost).boxed().collect(Collectors.toList()));

        for (int i : lost) {
            if (reserveSet.contains(i)) {
                reserveSet.remove(i);
                lostSet.remove(i);
            }
        }

        for (int i : lostSet) {
            if (reserveSet.contains(i - 1)) {
                reserveSet.remove(i - 1);
            } else if (reserveSet.contains(i + 1)) {
                reserveSet.remove(i + 1);
            } else {
                answer--;
            }
        }

        return answer;
    }
}
반응형