[λ°±μ€]JavaScript(nodejs) 1931λ² 'νμμ€ λ°°μ ' λ¬Έμ νμ΄
π λ€μ΄κ°λ©°
μλ°μ€ν¬λ¦½νΈ(nodejs)λ‘ λ°±μ€ 1931λ² λ¬Έμ μΈ κ·Έλ¦¬λ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ 'νμμ€ λ°°μ ' λ¬Έμ λ₯Ό νμ΄ν΄λ³΄κ² λ€.
β λ¬Έμ
λ¬Έμ μ€λͺ
ν κ°μ νμμ€μ΄ μλλ° μ΄λ₯Ό μ¬μ©νκ³ μ νλ Nκ°μ νμμ λνμ¬ νμμ€ μ¬μ©νλ₯Ό λ§λ€λ €κ³ νλ€. κ° νμ Iμ λν΄ μμμκ°κ³Ό λλλ μκ°μ΄ μ£Όμ΄μ Έ μκ³ , κ° νμκ° κ²ΉμΉμ§ μκ² νλ©΄μ νμμ€μ μ¬μ©ν μ μλ νμμ μ΅λ κ°μλ₯Ό μ°Ύμ보μ. λ¨, νμλ νλ² μμνλ©΄ μ€κ°μ μ€λ¨λ μ μμΌλ©° ν νμκ° λλλ κ²κ³Ό λμμ λ€μ νμκ° μμλ μ μλ€. νμμ μμμκ°κ³Ό λλλ μκ°μ΄ κ°μ μλ μλ€. μ΄ κ²½μ°μλ μμνμλ§μ λλλ κ²μΌλ‘ μκ°νλ©΄ λλ€.
μ λ ₯
- 첫째 μ€μ νμμ μ N(1 ≤ N ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° N+1 μ€κΉμ§ κ° νμμ μ λ³΄κ° μ£Όμ΄μ§λλ° μ΄κ²μ 곡백μ μ¬μ΄μ λκ³ νμμ μμμκ°κ³Ό λλλ μκ°μ΄ μ£Όμ΄μ§λ€. μμ μκ°κ³Ό λλλ μκ°μ 231-1λ³΄λ€ μκ±°λ κ°μ μμ°μ λλ 0μ΄λ€.
μΆλ ₯
첫째 μ€μ μ΅λ μ¬μ©ν μ μλ νμμ μ΅λ κ°μλ₯Ό μΆλ ₯νλ€.
μμ μ λ ₯ 1
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14
μμ μΆλ ₯ 1
4
π‘ νμ΄
그리λ μκ³ λ¦¬μ¦ λ¬Έμ λ€. μ‘°κΈλ§ μκ°νλ©΄ μ¬μ΄ λ¬Έμ μΈ κ² κ°λ€.
μμ μκ°μ΄ λΉ λ₯΄μ§λ§ λλλ μκ°μ΄ λ무 λ¦μ΄λ²λ¦¬λ©΄ λ€μ νμλ₯Ό νμ§ λͺ»νλ κ²½μ°κ° μκΈΈ μ μλ€.
κ·Έλμ μ΅λν νμμ€μ μ¬μ©νκΈ° μν΄μλ λλλ μκ°μ΄ λΉ¨λΌμΌ νλ€. κ·ΈλμΌ λ€μ νμλ€μ μ΅λν μ΄μ©ν μ μλ€.
μ£Όμμ¬νμΌλ‘ νμμ€μ μ΄μ©νλ μκ°μ κ²ΉμΉ μ μλ€λ μ λ μ μνλ€.
λ¨Όμ μ λ ₯ λ°μ λ°°μ΄μ λλλ μκ° κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬μ ν΄μ€λ€. λμ μ λλλ μκ°μ΄ κ°μ κ²½μ° μμ μκ° κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬μ ν΄μ€λ€. λλλ μκ°μ΄ κ°μ κ²½μ°μλ μΌμ° μμμ ν΄μΌ μ΅λν λ λ§μ΄ μ΄μ©μ ν μ μλ€.
μ΄μ μ λ ¬λ κ°λ€μ μννκΈ° μ μ etλΌλ λ³μλ₯Ό 0μΌλ‘ μ΄κΈ°νν΄μ€¬λλ°, μ΄ λ³μλ μ΅κ·Όμ νμμ€μ μ΄μ©νκ³ λλλ μκ°μ μ μ₯ν λ³μλ€. 0μΌλ‘ μ΄κΈ°ν ν¨μΌλ‘μ¨ μ λ ¬λ λ°°μ΄μ μνν λ μ΅μ 1κ° μ΄μμ νμμ€μ μ΄μ©ν μ μκ² λ ν΄μ£Όμλ€.
μ΄μ μ λ ¬λ λ°°μ΄λ€μ forEachλ¬Έμ λ리λλ° μμμκ°μ΄ λ³μ et(μ΅κ·Όμ νμμ€μ΄ λλ μκ°)μ κ°λ³΄λ€ ν¬κ±°λ κ°λ€λ©΄ answerμ κ°μ μ¦κ° μν€λ©΄μ νμμ€μ μ΄μ©ν νμλ₯Ό λμ μμΌμ£Όκ³ , λ³μ etμ μ΄μ©ν νμμ€μ λλλ μκ°μ μ μ₯μμΌμ£Όλ©΄μ μ λ ¬λ λ°°μ΄λ€μ κ²μ¬νκ² λλ€.
νμ΄ μ½λ
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(file).toString().trim().split('\n');
const [n, ...arr] = input;
let answer = 0;
const times = arr
.map((num) => num.split(' ').map((num) => +num))
.sort((a, b) => {
if (a[1] === b[1]) {
return a[0] - b[0];
} else {
return a[1] - b[1];
}
});
let et = 0;
times.forEach((time) => {
if (time[0] >= et) {
answer++;
et = time[1];
}
});
console.log(answer);
β μ±μ