몇 번 문제인지 기억 안남[프로그래머스]

ynoolee·2022년 9월 7일
0

코테준비

목록 보기
137/146

뭐였더라..

import java.util.*;
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        int[] arr = init(n, lost, reserve);
        
        answer = search(n,arr);

        return answer;
    }

    // 순차적으로 0 인 cell 에 대해, 거기서부터 시작해서, 연속해서 1이상인 앞? 뒤 ? 쪽의 원소들 중 2인 애도 존재하는지??? 
    private int search(int n, int[] arr) {
        int cur = 0; int cnt = 0;
        
        for(int i = 0; i < n; i++) {
            if(arr[i] == 1) {
                cnt += 1;
            } else if (arr[i] == 2) {
                if(cur < 0) {
                    cur += 1;
                    cnt += 2;
                } else {
                    cur += 1;
                    cnt += 1;
                }
            } else {
                if( cur > 0) {
                    cur -= 1;
                    cnt += 1;
                } else {
                    cur -= 1;
                }
            }
        }

        return cnt;
    }

    private int[] init(int n, int[] lost, int[] reserve) {
        int[] arr = new int[n];
        // init as 1
        Arrays.fill(arr, 1);
        // update as 2 
        for(int r : reserve) {
            arr[r-1] += 1;
        }
        // reduce 1
        for(int l : lost) {
            arr[l-1] -= 1; 
        }

        return arr;
    }
}

0개의 댓글