์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [Lv1_42862] ์ฒด์œก๋ณต

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0;
        
        // ํ•™์ƒ ์ฒด์œก๋ณต ๋ฐฐ์—ด ( ์•ž์—, ๋’ค์— ์—ฌ์œ  ํ•œ ๋ช…์”ฉ, ์–ด์ฐจํ”ผ 0 ์ด๋ผ ์ƒ๊ด€ ์—†์Œ)
        int[] arr = new int[n+2];
        
        // ํ•™์ƒ ์ฒด์œก๋ณต ์ž…๋ ฅ ( ๋จผ์ € ๋‹ค 1๊ฐœ์”ฉ ์ค€๋‹ค )
        for(int i=1; i<=n; i++){
            arr[i]++;
        }
        
        // ์—ฌ๋ฒŒ ์ฒด์œก๋ณต ์ž…๋ ฅ
        for(int i=0; i<reserve.length; i++){
            arr[reserve[i]]++;
        }

         // ์ฒด์œก๋ณต ๋„๋‚œ
        for(int i=0; i<lost.length; i++){
            arr[lost[i]]--;
        }
        
        // ์ฒด์œก๋ณต ๋นŒ๋ฆด์ˆ˜ ์žˆ๋Š”์ง€ ์ฒดํฌ
        for(int i=1; i<=n; i++){
            // ์ฒด์œก๋ณต์ด ์—†๋‹ค๋ฉด
            if(arr[i] == 0){
                // ์•ž์— ์ฒด์œก๋ณต์ด 2๊ฐœ๋ผ๋ฉด ํ•˜๋‚˜ ๋นŒ๋ฆฌ๊ธฐ
                if(arr[i-1]==2){
                    arr[i-1]--;
                    arr[i]++;
                }
                // ๋’ค ํ™•์ธ ( ์•ž์— ๋นŒ๋ฆด๊ฒŒ ์—†๋‹ค๋ฉด )
                else if(arr[i+1]==2){
                    arr[i+1]--;
                    arr[i]++;            
                }
            }
        }
        
        // 0๋ณด๋‹ค ํฌ๋ฉด ์ฒด์œก๋ณต์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ
        // ์ถœ๋ ฅ
        for(int i=1; i<=n; i++){
            if(arr[i]>0) answer++;
        }
        
        return answer;
    }
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์ด ๋ฌธ์ œ๋Š” greedy ๋ฌธ์ œ์ด๋‹ค.
๊ธฐ์กด์— ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ  ๋น„๊ตํ•ด์„œ ํ’€์—ˆ๋Š”๋ฐ ์ฝ”๋“œ์˜ ์ˆ˜๋ฅผ ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ key๋Š” ํ•™์ƒ๋ฐฐ์—ด์„ +2 ํ•ด์„œ if๋ฌธ์„ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค.
๋‚œ ์•ž๋’ค ํ™•์ธ์„ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด +2๋ฅผ ์ƒ๊ฐํ•ด๋ƒˆ๋‹ค.