[ ๐—•๐—ข๐— ] 2358๋ฒˆ ํ‰ํ–‰์„  - ์ •๋ ฌ, ํ•ด์‹œ | JavaScript

NewHaยท2025๋…„ 5์›” 2์ผ
0
post-thumbnail

๐ŸŽฏ ๋ฌธ์ œ ์„ค๋ช…

๐Ÿงฉ ๋ฐฑ์ค€ 2458๋ฒˆ - ํ‰ํ–‰์„  | ์‹ค๋ฒ„4

ํ‰๋ฉด์— n๊ฐœ์˜ ์ ์ด ์žˆ๋‹ค. ๊ทธ์ค‘ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ ์„ ์ง€๋‚˜๋ฉด์„œ x์ถ• ๋˜๋Š” y์ถ•์— ํ‰ํ–‰ํ•œ ์ง์„ ์ด ๋ช‡ ๊ฐœ์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

  • ์ฒซ์งธ ์ค„: 1 โ‰ค n โ‰ค 100,000
  • ๋‘˜์งธ ์ค„ ~ n๊ฐœ : ๊ฐ ์ ์˜ ์ขŒํ‘œ, ๊ฐ™์€ ์ขŒํ‘œ๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ๊ณ  ์ด๋•Œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ ์œผ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.
    • 1 < |x, y| < 231
4
0 0
10 10
0 10
10 0

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹ต์„ ์ถœ๋ ฅ

4

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๋ฌธ์ œ ํ’€์ด

์ฃผ์–ด์ง„ ์ขŒํ‘œ์˜ ์ ์ด ์žˆ๊ณ , 2๊ฐœ ์ด์ƒ์˜ ์ ์„ ๋™์‹œ์— ์ง€๋‚˜๋Š” ์ง์„ ๋งŒ ์„ธ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ x์ขŒํ‘œ๋ณ„๋กœ 2๊ฐœ ์ด์ƒ ๋“ฑ์žฅํ•˜๋Š” ์„ธ๋กœ์„ ๊ณผ, ๊ฐ y์ขŒํ‘œ๋ณ„๋กœ 2๊ฐœ ์ด์ƒ ๋“ฑ์žฅํ•˜๋Š” ๊ฐ€๋กœ์„ ์„ ์„ธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ฃผ์–ด์ง„ ์ขŒํ‘œ์˜ ์ ์„ x์ขŒํ‘œ๋ณ„๋กœ, y์ขŒํ‘œ๋ณ„๋กœ ์นด์šดํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

const countX = new Map();
const countY = new Map();

const coordinates = input.slice(1).map(line => line.split(' ').map(Number));

for (const [x, y] of coordinates) {
    countX.set(x, (countX.get(x) || 0) + 1);
    countY.set(y, (countY.get(y) || 0) + 1);
}

์ด์ œ ๊ฐ๊ฐ ๊ฐ’์ด 2 ์ด์ƒ์ธ key๋ฅผ ์„ธ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

let result = 0;
for (const [x, cnt] of countX) {
    if (cnt >= 2) result += 1;
}
for (const [y, cnt] of countY) {
    if (cnt >= 2) result += 1;
}

์ตœ์ข… ์ฝ”๋“œ

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const n = Number(input[0]);
const coordinates = input.slice(1).map(line => line.split(' ').map(Number));

const countX = new Map();
const countY = new Map();

for (const [x, y] of coordinates) {
    countX.set(x, (countX.get(x) || 0) + 1);
    countY.set(y, (countY.get(y) || 0) + 1);
}

let result = 0;
for (const [x, cnt] of countX) {
    if (cnt >= 2) result += 1;
}
for (const [y, cnt] of countY) {
    if (cnt >= 2) result += 1;
}

console.log(result);

๋ง, ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„ ์ตœ์ ํ™”(๋ฆฌํŒฉํ† ๋ง)

countX ์™€ countY ๋ณ„๋กœ ์„ธ๋Š” ๋ถ€๋ถ„์˜ for๋ฌธ์ด ์ค‘๋ณต๋˜์–ด์„œ ๋ฆฌํŒฉํ† ๋ง์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

const countLines = (map) => {
	return [...map.values()].filter(count => count >= 2).length;
}

console.log(countLines(countX) + countLines(countY));

ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ํ•„์š” ์—†๋Š” ๋ณ€์ˆ˜๋ฅผ ์ค„์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
๋ฐฑ ๋ฒˆ์„ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€๋Š” ์•ˆ๋‹ค ๐Ÿ‘€

0๊ฐœ์˜ ๋Œ“๊ธ€