Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ/Programmers

[Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  kit ๋‹จ์†์นด๋ฉ”๋ผ

ALiNew 2020. 7. 16. 12:30

๐Ÿ“š ๋ฌธ์ œ ์„ค๋ช…

๊ณ ์†๋„๋กœ๋ฅผ ์ด๋™ํ•˜๋Š” ๋ชจ๋“  ์ฐจ๋Ÿ‰์ด ๊ณ ์†๋„๋กœ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ๋‹จ์†์šฉ ์นด๋ฉ”๋ผ๋ฅผ ํ•œ ๋ฒˆ์€ ๋งŒ๋‚˜๋„๋ก ์นด๋ฉ”๋ผ๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์†๋„๋กœ๋ฅผ ์ด๋™ํ•˜๋Š” ์ฐจ๋Ÿ‰์˜ ๊ฒฝ๋กœ routes๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์ฐจ๋Ÿ‰์ด ํ•œ ๋ฒˆ์€ ๋‹จ์†์šฉ ์นด๋ฉ”๋ผ๋ฅผ ๋งŒ๋‚˜๋„๋ก ํ•˜๋ ค๋ฉด ์ตœ์†Œ ๋ช‡ ๋Œ€์˜ ์นด๋ฉ”๋ผ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • ์ฐจ๋Ÿ‰์˜ ๋Œ€์ˆ˜๋Š” 1๋Œ€ ์ด์ƒ 10,000๋Œ€ ์ดํ•˜์ž…๋‹ˆ๋‹ค.

  • routes์—๋Š” ์ฐจ๋Ÿ‰์˜ ์ด๋™ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ routes[i][0]์—๋Š” i๋ฒˆ์งธ ์ฐจ๋Ÿ‰์ด ๊ณ ์†๋„๋กœ์— ์ง„์ž…ํ•œ ์ง€์ , routes[i][1]์—๋Š” i๋ฒˆ์งธ ์ฐจ๋Ÿ‰์ด ๊ณ ์†๋„๋กœ์—์„œ ๋‚˜๊ฐ„ ์ง€์ ์ด ์ ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฐจ๋Ÿ‰์˜ ์ง„์ž…/์ง„์ถœ ์ง€์ ์— ์นด๋ฉ”๋ผ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด๋„ ์นด๋ฉ”๋ผ๋ฅผ ๋งŒ๋‚œ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

  • ์ฐจ๋Ÿ‰์˜ ์ง„์ž… ์ง€์ , ์ง„์ถœ ์ง€์ ์€ -30,000 ์ด์ƒ 30,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

๐ŸŽฏ ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋‚˜

import java.util.Arrays;

class Solution {
    public int solution(int[][] routes) {
        int nCamera = routes.length; // ๋ชจ๋“  ์ฐจ๋“ค์˜ ์ด๋™ ๊ตฌ๊ฐ„๋งˆ๋‹ค ์นด๋ฉ”๋ผ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ€์ •
        
        // ์ฐจ๋Ÿ‰์˜ ์ง„์ž… ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
        Arrays.sort(routes, (o1, o2) -> Integer.compare(o1[0], o2[0]));
        
        int pEnter1 = routes[0][0];
        int pExit1 = routes[0][1];
        
        for(int i = 1; i < routes.length; i++) {
            int pEnter2 = routes[i][0];
            int pExit2 = routes[i][1];
            
            // ํ•œ ์ฐจ๋Ÿ‰์˜ ์ด๋™๊ตฌ๊ฐ„์ด ๋‹ค๋ฅธ ์ฐจ๋Ÿ‰์˜ ์ด๋™๊ตฌ๊ฐ„์„ ์™„์ „ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ
            if(pEnter1 <= pEnter2 && pExit1 >= pExit2) {
                pEnter1 = pEnter2;
                pExit1 = pExit2;
                
                nCamera--;
                continue;
            }
            
            // ํ•œ ์ฐจ๋Ÿ‰์˜ ์ด๋™๊ตฌ๊ฐ„์ด ๋‹ค๋ฅธ ์ฐจ๋Ÿ‰์˜ ์ด๋™๊ตฌ๊ฐ„์„ ๋ถ€๋ถ„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ
            if(pEnter1 <= pEnter2 && pExit1 < pExit2 && pExit1 >= pEnter2) {
                pEnter1 = pEnter2;
                pExit1 = (pExit1 <= pExit2) ? pExit1 : pExit2;
                
                nCamera--;
                continue;
            }
            
            pEnter1 = pEnter2;
            pExit1 = pExit2;
        }
        
        return nCamera;
    }
}

 

๐Ÿง ์™œ ์ €๋ ‡๊ฒŒ ํ’€์—ˆ๋‚˜

๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ์€ 'ํ•œ ์ฐจ์˜ ์ด๋™๊ตฌ๊ฐ„์ด ๋‹ค๋ฅธ ์ฐจ์˜ ์ด๋™๊ตฌ๊ฐ„์„ ํฌํ•จํ•˜๋ฉด ๊ฒน์น˜๋Š” ์ด๋™๊ตฌ๊ฐ„์„ ์ƒˆ๋กœ์šด ์ฐจ ํ•˜๋‚˜์˜ ์ด๋™๊ตฌ๊ฐ„์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ธฐ' ์ด๋‹ค.

 

๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ๊ฐ€์ •์ด ์žˆ๋Š”๋ฐ ๊ทธ๊ฒƒ์€ ๋ชจ๋“  ์ฐจ๋“ค์˜ ์ด๋™๊ตฌ๊ฐ„๋งˆ๋‹ค ์นด๋ฉ”๋ผ๊ฐ€ ํ•˜๋‚˜์”ฉ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ ๋‚˜์„œ ํ•œ ์ฐจ์˜ ์ด๋™๊ตฌ๊ฐ„์ด ๋‹ค๋ฅธ ์ฐจ์˜ ์ด๋™๊ตฌ๊ฐ„์„ ํฌํ•จํ•˜๋ฉด ๊ฒธ์น˜๋Š” ์ด๋™๊ตฌ๊ฐ„์„ ์ƒˆ๋กœ์šด ์ฐจ ํ•˜๋‚˜์˜ ์ด๋™๊ตฌ๊ฐ„์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์นด๋ฉ”๋ผ ๊ฐœ์ˆ˜๋ฅผ ์ค„์—ฌ์ค€๋‹ค.

 

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ฐจ๋Ÿ‰์˜ ์ง„์ž… ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฐจ๋Ÿ‰์˜ ์ด๋™๊ตฌ๊ฐ„์„ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉฐ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š”๋ฐ ์ƒ๊ฐํ•ด๋ณด๋ฉด ํฌํ•จ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ๋งˆ๋‹ค ๊ฒน์น˜๋Š” ๊ตฌ๊ฐ„์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๊ฐ„ ์ˆ˜์ •์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

1. ์™„์ „ ํฌํ•จ

 

2. ๋ถ€๋ถ„ ํฌํ•จ

 

๐Ÿ“– ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜

์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค. ์•„๋งˆ ๊ทธ๋งŒํผ ์„ฑ์žฅํ–ˆ๋‹ค๋Š” ์ฆ๊ฑฐ์ผ ๊ฒƒ์ด๋‹ค ๐Ÿ˜†๐Ÿ˜†๐Ÿ˜†

๊ทธ๋ฆฌ๊ณ  ๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ทธ๋ฆฌ๋””๋ณด๋‹ค ์™„ํƒ์— ๊ฐ€๊นŒ์šด๋ฐ ๊ทธ๋ฆฌ๋””๋กœ๋Š” ์–ด๋–ป๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ ๋ฏผํ•ด์•ผ๊ฒ ๋‹ค.