본문 바로가기
개발

[99클럽] 알고리즘 TIL: 백준 32953번 회상 - JavaScript

by soyooooon 2025. 1. 24.
반응형

문제링크

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

백준 32953번 문제

풀이방법

  • N, M이 주어지는 0번 인덱스를 제외하고, 짝수 인덱스에 클래스를 듣는 학생들의 학번이 있다.
  • 학번을 split을 활용하여 배열로 만들고, 학번을 key로 잡고 학번마다 듣는 클래스 수를 value로 잡는다.
  • key값에 대한 value가 존재하지 않을 경우, value를 1로 세팅하고 value가 존재할 경우 이전 값에서 1을 더해준다.
  • Map을 순회하며 value가 M 이상인 key값의 수를 세어 출력한다.
const readline = require("readline");

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

const input = [];

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

rl.on("close", () => {
	const [N, M] = input[0].split(" ").map(Number);

	const studentsClassesMap = new Map();
	for (let i = 1; i <= N; i++) {
		const students = input[i * 2].split(" ");

		students.forEach((student) => {
			const studentClasses = studentsClassesMap.get(student);
			studentsClassesMap.set(student, studentClasses ? studentClasses + 1 : 1);
		});
	}

	let count = 0;
	for (const [_, classes] of studentsClassesMap) {
		if (classes >= M) {
			count++;
		}
	}

	console.log(count);
});
반응형