BOJ[7785] - 회사에 있는 사람 by JavaScript
회사에 있는 사람
문제
언어
- JavaScript
순서도
- 출입 기록을 보면서 “enter” 면 Map 에 직원의 이름을 key 값으로 true 를 value 값으로 넣기
- 출입 기록이 “leave” 면 Map 에 있는 직원의 이름을 key 값으로 false 를 value 값으로 설정
- Map 에서 value 값이 true 인 직원의 이름만 별도의 배열에 모으기
- 별도의 배열에 있는 직원의 이름들을 사전 순의 역순으로 출력하기
문제 풀이 step 1
- 상근이가 다니는 회사의 출입 기록이 있는데, 그 기록을 보면서 현재 회사에 있는 모든 사람을 구하는 문제입니다.
- 우선, Map 을 선언합니다.
- 모든 출입 기록을 확인합니다.
- 출입 기록을 보면서, “enter” 인 경우 직원의 이름을 key 값으로 해서 true 를 value 값으로 설정합니다.
- 출입 기록을 보면서, “leave” 인 경우 직원의 이름을 key 값으로 해서 false 를 value 값으로 설정합니다.
- 출입 기록을 다 확인했으면, Map 에서 value 값이 true 인 직원만 모두 모읍니다.
- 모든 직원들을 사전 순의 역순으로 정렬하고 출력하면 정답입니다.
- 추가 설명은 주석으로 작성하겠습니다.
소스 코드
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const solution = (input) => {
const n = Number(input[0]);
// Map 선언
const map = new Map();
// 모든 출입 기록 확인
for (let i = 1; i < n + 1; i++) {
const [name, status] = input[i].split(" ");
// "enter" 인 경우 Map 에 true 로 설정
if (status === "enter") map.set(name, true);
// "leave" 인 경우 Map 에 false 로 설정
else map.set(name, false);
}
let res = [];
// value 값이 true 인 직원만 모두 모으기
for (let item of map) {
if (item[1] === false) continue;
res.push(item[0]);
}
// 사전 순의 역순으로 정렬하고 출력하기
return res.sort().reverse().join("\n");
};
console.log(solution(input));