[알고리즘] 백준 7785 회사에 있는 사람 (자바스크립트)

Subin·2022년 12월 22일
0
post-thumbnail
post-custom-banner

스택
회사에 있는 사람

✏️ 요구 사항 분석

  • 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다.
  • 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다.
  • 출입카드 로그를 확인해 현재 회사에 있는 모든 사람을 구하시오

입력

  • enter 는 출근, leave 는 퇴근이다.
  • 동명이인이 없으며 대소문자가 다른 경우는 다른 이름이다.

출력

  • 회사에 있는 사람의 이름을 사전 순의 역순으로 한줄에 한명씩 출력

🗒 내 풀이

function solution(data) {
  const input = data.split("\n");
  const N = Number(input.splice(0, 1).join(""));
  let set = new Set();
  for (let i = 0; i < N; i++) {
    const [name, state] = input[i].split(" ");
    if (state === "enter") {
      set.add(name);
    }
    if (state === "leave") {
      set.delete(name);
    }
  }
  let answer = [...set].sort();
  answer.reverse();
  return answer.join("\n");
}

const case1 = `4
Baha enter
Askar enter
Baha leave
Artem enter`;

console.log(solution(case1));

⌨️ 풀이 과정

1

const [name, state] = input[i].split(" ");

출입 로그에서 이름과 방문 상태를 구조 분해 할당으로 받아 온다.

2

if (state === "enter") {
  set.add(name);
}
if (state === "leave") {
  set.delete(name);
}

state 가 enter일시 set에 추가하고 아니면 set에서 삭제한다.

3

let answer = [...set].sort();
answer.reverse();
return answer.join("\n");

객체인 set를 스프레드 연산자를 통해 배열로 만들어 sort()로 정렬했다.
그다음에 reverse() 함수로 역순으로 바꿔 출력하면 된다.

profile
고양이가 세상을 지배한다.
post-custom-banner

0개의 댓글