스택
회사에 있는 사람
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));
const [name, state] = input[i].split(" ");
출입 로그에서 이름과 방문 상태를 구조 분해 할당으로 받아 온다.
if (state === "enter") {
set.add(name);
}
if (state === "leave") {
set.delete(name);
}
state 가 enter일시 set에 추가하고 아니면 set에서 삭제한다.
let answer = [...set].sort();
answer.reverse();
return answer.join("\n");
객체인 set를 스프레드 연산자를 통해 배열로 만들어 sort()로 정렬했다.
그다음에 reverse() 함수로 역순으로 바꿔 출력하면 된다.