[백준 2457번] 그리디 알고리즘 - 공주님의 정원

김민지·2023년 8월 23일
0

냅다 시작 백준

목록 보기
80/118

✨ 문제 ✨

✨ 정답 ✨

const { count } = require("console");
const fs = require("fs");
const { nextTick } = require("process");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim();


// const fs = require('fs'); 
// let input = fs.readFileSync("/dev/stdin").toString().trim();

input=input.split('\n')

const N = parseInt(input[0]);

const arr = [];

for(let i=1;i<=N;i++) {
    arr.push(input[i].split(" ").map(Number));
}


let flowerCount = 0;

const solution = () => {
    let month = 3;
    let day = 1;
    let index = -1;
    
    let endMonth = 0;
    let endDay = 0;

    const visit = Array(N).fill(false);

    while(true) {
        for(let i=0;i<N;i++) {
            if(visit[i]) {
                continue;
            }
            if(arr[i][0] < month || (arr[i][0] === month && arr[i][1] <= day)) {
                if(arr[i][2] > endMonth || (arr[i][2] === endMonth && arr[i][3] > endDay)) {
                    index = i;
                    endMonth = arr[i][2];
                    endDay = arr[i][3];
                }
            }
        }
        if(index == -1) {
            console.log(0);
            break;
        }
        m = arr[index][2];
        if(m === 12) {
            console.log(flowerCount + 1);
            break;
        }
        d = arr[index][3];
        visit[index] = true;
        flowerCount++;
        endMonth = 0;
        endDay = 0;
        index = -1;
    }
}

solution();

🧵 참고한 정답지 🧵

https://j-su2.tistory.com/88

💡💡 기억해야 할 점 💡💡

로직은 비슷하게 생각해냈는데 break 조건(12/1)과 0을 출력하는 경우의 조건을 제대로 설정하지 못해 틀렸었다.

profile
이건 대체 어떻게 만든 거지?

0개의 댓글