Question
๋ฐฑ์ค 1931๋ฒ : ํ์์ค ๋ฐฐ์
ํ ๊ฐ์ ํ์์ค์ด ์๋๋ฐ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ N๊ฐ์ ํ์์ ๋ํ์ฌ ํ์์ค ์ฌ์ฉํ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ค. ๊ฐ ํ์ I์ ๋ํด ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ ธ ์๊ณ , ๊ฐ ํ์๊ฐ ๊ฒน์น์ง ์๊ฒ ํ๋ฉด์ ํ์์ค์ ์ฌ์ฉํ ์ ์๋ ํ์์ ์ต๋ ๊ฐ์๋ฅผ ์ฐพ์๋ณด์. ๋จ, ํ์๋ ํ๋ฒ ์์ํ๋ฉด ์ค๊ฐ์ ์ค๋จ๋ ์ ์์ผ๋ฉฐ ํ ํ์๊ฐ ๋๋๋ ๊ฒ๊ณผ ๋์์ ๋ค์ ํ์๊ฐ ์์๋ ์ ์๋ค. ํ์์ ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ๊ฐ์ ์๋ ์๋ค. ์ด ๊ฒฝ์ฐ์๋ ์์ํ์๋ง์ ๋๋๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ฉด ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ์์ ์ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N+1 ์ค๊น์ง ๊ฐ ํ์์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋๋ฐ ์ด๊ฒ์ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ํ์์ ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ง๋ค. ์์ ์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ 231-1๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต๋ ์ฌ์ฉํ ์ ์๋ ํ์์ ์ต๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ์์
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14
์ถ๋ ฅ์์
4
My Code
์ ๋ ฌ์ ์๋ชป ์๊ฐํ๋ค ๐คฏ
์ ๋ ฌ์ด ์ด๋ ๋์ ๋ฐ๋ผ ๋ต์ด ๋ฌ๋ผ์ก๋ค.
์ฒ์์๋ ์์ํ๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ํ๋ค.
๊ฒฐ๊ณผ๋ ํ๋ ธ๋ค๐
const fs = require('fs');
const input = fs.readFileSync('example.txt').toString().trim().split('\n');
let num = Number(input.shift());
// ์ซ์ ์ด์ค๋ฐฐ์ด๋ก ์ ํ
let arr = [];
for (let i = 0; i < num; i++) {
arr.push(input[i].split(' ').map(Number))
}
// ๋ฐฐ์ด ์ ๋ ฌ
arr = arr.sort((a, b) => a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]);
let result = 1;
let end = arr[0][1];
for (let i = 1; i < arr.length; i++) {
let [from, to] = arr[i];
if (from >= end) {
end = to;
result++;
}
}
console.log(result)
WHY? (ํ๋ฆฐ์ด์ )
์์ํ๋ ์๊ฐ์ ์ค์ ์ผ๋ก ์ ๋ ฌ์ ํ๋ฉด ์ต๋๋ก ๋ง์ด ํ์๋ฅผ ํ ์ ์๋ ๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
๋๋๋ ์๊ฐ์ด ๋ค์ฅ ๋ ์ฅ ํ๊ธฐ ๋๋ฌธ์
๊ทธ๋ค์ ํด์ผ๋ก ๋์ด๊ฐ๋ฉด ๋ ๋นจ๋ฆฌ ๋๋๋ ์๊ฐ๋๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ ๋์น๊ณ ๋ง๋ค.
๋ฐ๋ผ์ ์ต๋์ ๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
๋๋๋ ์๊ฐ์ ๊ธฐ์ ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํด์ผ ํ๋ค.
์์ ํ ์ฝ๋
const fs = require('fs');
const input = fs.readFileSync('example.txt').toString().trim().split('\n');
let num = Number(input.shift());
// ์ซ์ ์ด์ค๋ฐฐ์ด๋ก ๋ณํ
let arr = [];
for (let i = 0; i < num; i++) {
arr.push(input[i].split(' ').map(Number))
}
// ๋ฐฐ์ด ์ ๋ ฌ (๋๋๋ ์๊ฐ ๊ธฐ์ )
arr = arr.sort((a, b) => a[1] === b[1] ? a[0] - b[0] : a[1] - b[1]);
let result = 1;
let end = arr[0][1];
for (let i = 1; i < arr.length; i++) {
let [from, to] = arr[i];
if (from >= end) {
end = to;
result++;
}
}
console.log(result)
๋ง์์ต๋๋ค!!
HOW? (ํ์ด๋ฐฉ๋ฒ)
- ํ์์๊ณ ๋ฆฌ์ฆ ๋ต๊ฒ ํ์ฌ ์ํฉ์์ ์ต์ ์ ์ ํ์ด ๋๋ ๊ฒ์ ํ๋ค.
- ์ ๋ ฌํ ์๊ฐ์ ๊ฐ์ฅ ์ฒ์ ์๊ฐ๋๋ถํฐ ์์ํ๋ค.
- ๋๋๋ ์๊ฐ์ ๋ณ์๋ฅผ ์ฒ์ ์๊ฐ๋์ ๋๋๋ ์๊ฐ์ผ๋ก ์ง์ ํ๋ค.
- ๊ทธ๋ค์ ์๊ฐ๋๋ถํฐ ๋๊น์ง for๋ฌธ์ ๋๋ ค์ค๋ค.
- ๋๋๋ ์๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ํ๋ ์๊ฐ์ด ์๋ค๋ฉด ๋ค์ ํ์๋ก ๋๊ฒจ์ค๋ค.
- ํ์๊ฐ ๋๊ฒจ์ง ๋๋ง๋ค result๊ฐ +1์ด ๋๋๋ก ํ๋ค.
- result๋ฅผ ์ถ๋ ฅํ๋ฉด ๋!
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ์ด ํฌ์คํ ์ ๋ณด๋ฉด ํ์ธํ ์ ์๋ค.
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด๋ ์ํฉ์ ๋ง๊ฒ ๋ง๋ค์ด์ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
๋๋ ๋ถ๋ช ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋๋ฐ ์ ์ ํ๋ฆฌ์ง?
์๊ฐํ๋ ๋ถ๋ถ์ด ํ๋ ค์ ๋คํ์ด๋ค.
๋ฐ๋ด ๊ตฌ๊ธ๋ง์๊ฒ ์ธ์ ๋ ๊ณ ๋ง๋ค.
์์ฆ ์๊ณ ๋ฆฌ์ฆ ํธ๋ ๋ด ๋ชจ์ต
ํ๋ ค๋ ์ดํด๊ฐ ์ ๋ผ์ ์๊ธฐ๋ค.
๊ทธ๋๋ ๋๊น์ง ์ดํดํ๋ ค๊ณ ํ๋ค.
'Algorithms > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ๋ฐฑ์ค 10815๋ฒ : ์ซ์ ์นด๋ (0) | 2022.06.05 |
---|---|
[JS] ๋ฐฑ์ค 10841๋ฒ : ๋์ด์ ์ ๋ ฌ (0) | 2022.05.28 |
[JS] ๋ฐฑ์ค 10870๋ฒ : ํผ๋ณด๋์น ์ 5 (0) | 2022.05.16 |
[JS] ๋ฐฑ์ค 10872๋ฒ : ์ฌ๊ท (0) | 2022.05.15 |
[JS] ๋ฐฑ์ค 2108๋ฒ : ํต๊ณํ (0) | 2022.05.13 |