본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 7785/javascript] 회사에 있는 사람

by tokkiC 2022. 10. 28.

조건의 연산이 많으므로 최대한 간단하게 만들어서 비교해야 하는문제이다

enter leave 의 체크도 연산 낭비이니

객체로 카운트하여 변하였다면 나간것으로 보면 된다

비교시에도 0과 비교하는 것이 빠르므로 0인지를 확인하도록 한다

https://www.acmicpc.net/problem/7785

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

let input = [];

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input.push(line);
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  const n = Number(inp[0]);
  const employees = {};
  let inplen = inp.length;

  for (let i = 1; i < inplen; i++) {
    let [name, state] = inp[i].split(" ");

    if (employees[name]) {
      employees[name] = 0;
      // console.log("plus!");
    } else {
      employees[name] = -1;
    }
  }

  let ks = Object.keys(employees);
  let ans = ks.filter((k) => (employees[k] ? true : false));
  ans.sort().reverse();
  console.log(ans.join("\n"));

  // console.log(employees);
};

댓글