미새문지

크래프톤 정글 week07, day56 - 잔디심기, 동기화 코드 학습 중 본문

크래프톤 정글/TIL

크래프톤 정글 week07, day56 - 잔디심기, 동기화 코드 학습 중

문미새 2024. 3. 3. 23:35
728x90

오늘의 잔디심기

백준
24509
자바스크립트
실버5
상품의 주인은?
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");

const itemMaster = (N) => {
    const studentScore = [];
    const item_master = [];

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

    for(let j = 1; j <= 4; j++) {
        studentScore.sort((a, b) => {
            if (b[j] !== a[j]) {
                return b[j] - a[j];
            } else {
                return a[0] - b[0];
            }
        });

        for(let k = 0; k < N; k++) {
            if (!item_master.includes(studentScore[k][0])) {
                item_master.push(studentScore[k][0]);
                break;
            }
        }
    }

    console.log(item_master.join(' '));
}

let N = Number(input[0]);

itemMaster(N);

처음에 각 과목별 1등을 출력하는 줄 알고 바로 코드를 작성했는데 확인해보니 1등을 한 사람이 또 1등을 하면 그 다음 점수가 높은 사람을 출력하는 문제였다. 오름차순으로 정렬시켜 점수가 같으면 고유번호가 빠른 학생을 우선시했다.

1등을 찾으며 for문을 하다 더 사용해 1등을 하지않은 사람을 찾는다.

 

 

오늘은 오전 중에 빨래 하고 밖에서 점심을 먹고 들어왔다. 와서 잔디 하나 심고 pintOS 동기화 코드 안에 있는 세마포어와 뮤텍스를 학습하며, 열심히 코드에 대해 토론했다. 각 코드 파일마다 정적 변수들이 있어서 너무 헷갈린다. 

 

학습 시간 : 16 ~ 23시

728x90