kohigowild
[νλ‘κ·Έλλ¨Έμ€] 체μ‘볡 λ³Έλ¬Έ
πΎ λ¬Έμ μ€λͺ
μ μ¬μκ°μ λλμ΄ λ€μ΄, μΌλΆ νμμ΄ μ²΄μ‘볡μ λλλΉνμ΅λλ€. λ€νν μ¬λ² 체μ‘λ³΅μ΄ μλ νμμ΄ μ΄λ€μκ² μ²΄μ‘볡μ λΉλ €μ£Όλ € ν©λλ€. νμλ€μ λ²νΈλ 체격 μμΌλ‘ λ§€κ²¨μ Έ μμ΄, λ°λ‘ μλ²νΈμ νμμ΄λ λ°λ‘ λ·λ²νΈμ νμμκ²λ§ 체μ‘볡μ λΉλ €μ€ μ μμ΅λλ€. μλ₯Ό λ€μ΄, 4λ² νμμ 3λ² νμμ΄λ 5λ² νμμκ²λ§ 체μ‘볡μ λΉλ €μ€ μ μμ΅λλ€. 체μ‘λ³΅μ΄ μμΌλ©΄ μμ μ λ€μ μ μκΈ° λλ¬Έμ 체μ‘볡μ μ μ ν λΉλ € μ΅λν λ§μ νμμ΄ μ²΄μ‘μμ μ λ€μ΄μΌ ν©λλ€.
μ 체 νμμ μ n, 체μ‘볡μ λλλΉν νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ lost, μ¬λ²μ 체μ‘볡μ κ°μ Έμ¨ νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ reserveκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, 체μ‘μμ μ λ€μ μ μλ νμμ μ΅λκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
πΎ μ νμ¬ν
- μ 체 νμμ μλ 2λͺ μ΄μ 30λͺ μ΄νμ λλ€.
- 체μ‘볡μ λλλΉν νμμ μλ 1λͺ μ΄μ nλͺ μ΄νμ΄κ³ μ€λ³΅λλ λ²νΈλ μμ΅λλ€.
- μ¬λ²μ 체μ‘볡μ κ°μ Έμ¨ νμμ μλ 1λͺ μ΄μ nλͺ μ΄νμ΄κ³ μ€λ³΅λλ λ²νΈλ μμ΅λλ€.
- μ¬λ² 체μ‘λ³΅μ΄ μλ νμλ§ λ€λ₯Έ νμμκ² μ²΄μ‘볡μ λΉλ €μ€ μ μμ΅λλ€.
- μ¬λ² 체μ‘볡μ κ°μ Έμ¨ νμμ΄ μ²΄μ‘볡μ λλλΉνμ μ μμ΅λλ€. μ΄λ μ΄ νμμ 체μ‘볡μ νλλ§ λλλΉνλ€κ³ κ°μ νλ©°, λ¨μ 체μ‘λ³΅μ΄ νλμ΄κΈ°μ λ€λ₯Έ νμμκ²λ 체μ‘볡μ λΉλ €μ€ μ μμ΅λλ€.
πΎ λμ λ΅μ
function solution(n, lost, reserve) {
let student = new Array(n + 1).fill(1);
student[0] = 0;
for (let i = 1; i <= lost.length; ++i) {
student[lost[i - 1]] -= 1;
}
for (let i = 1; i <= reserve.length; ++i) {
student[reserve[i - 1]] += 1;
}
let answer = student.filter((n) => n !== 0).length;
for (let i = 1; i <= n; ++i) {
if ((student[i] === 0 && student[i + 1] === 2) || (student[i + 1] === 0 && student[i] === 2)) {
student[i] = 1;
student[i + 1] = 1;
answer++;
}
}
return answer;
}
- μ²μμ μ΄ μ½λλ μ€λ₯κ° λ μ ꡬκΈλ§μ ν΅ν΄ λΉμ·νκ² μ κ·Όν λ΅μμ μ°Ύκ³ μ½λλ₯Ό μμ νμλ€.
- λͺ¨λ νμμ΄ μ²΄μ‘볡μ κ°κ³ μλ€κ³ κ°μ ν λ°°μ΄ studentλ₯Ό μ μΈνκ³ , 1λ² μΈλ±μ€λΆν° μ¬μ©
- 체μ‘볡μ λλ λΉν νμμ -1, μ¬λ²μ 체μ‘볡μ κ°μ Έμ¨ νμμ +1 | student λ°°μ΄μ μΈλ±μ€μ λ§μΆ°μ +1 or -1
- 쑰건문μ ν΅ν΄ μΈμ ν λ°°μ΄μ κ°μ μ°¨μ΄κ° 2μΈ κ²½μ°, κ° κ°μ 1λ‘ λ³κ²½νκ³ answerμ 1μ λνλ€.
πΎ λ€λ₯Έ μ¬λμ νμ΄
function solution(n, lost, reserve) {
const students = {};
let answer = 0;
for (let i = 1; i <= n; i++) {
students[i] = 1;
}
lost.forEach((number) => (students[number] -= 1));
reserve.forEach((number) => (students[number] += 1));
for (let i = 1; i <= n; i++) {
if (students[i] === 2 && students[i - 1] === 0) {
students[i - 1]++;
students[i]--;
} else if (students[i] === 2 && students[i + 1] === 0) {
students[i + 1]++;
students[i]--;
}
}
for (let key in students) {
if (students[key] >= 1) {
answer++;
}
}
return answer;
}