λ¬Έμ μ€λͺ
μ μ¬μκ°μ λλμ΄ λ€μ΄, μΌλΆ νμμ΄ μ²΄μ‘볡μ λλλΉνμ΅λλ€. λ€νν μ¬λ² 체μ‘λ³΅μ΄ μλ νμμ΄ μ΄λ€μκ² μ²΄μ‘볡μ λΉλ €μ£Όλ € ν©λλ€. νμλ€μ λ²νΈλ 체격 μμΌλ‘ λ§€κ²¨μ Έ μμ΄, λ°λ‘ μλ²νΈμ νμμ΄λ λ°λ‘ λ·λ²νΈμ νμμκ²λ§ 체μ‘볡μ λΉλ €μ€ μ μμ΅λλ€. μλ₯Ό λ€μ΄, 4λ² νμμ 3λ² νμμ΄λ 5λ² νμμκ²λ§ 체μ‘볡μ λΉλ €μ€ μ μμ΅λλ€. 체μ‘λ³΅μ΄ μμΌλ©΄ μμ μ λ€μ μ μκΈ° λλ¬Έμ 체μ‘볡μ μ μ ν λΉλ € μ΅λν λ§μ νμμ΄ μ²΄μ‘μμ μ λ€μ΄μΌ ν©λλ€.
μ 체 νμμ μ n, 체μ‘볡μ λλλΉν νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ lost, μ¬λ²μ 체μ‘볡μ κ°μ Έμ¨ νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ reserveκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, 체μ‘μμ μ λ€μ μ μλ νμμ μ΅λκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- μ 체 νμμ μλ 2λͺ μ΄μ 30λͺ μ΄νμ λλ€.
- 체μ‘볡μ λλλΉν νμμ μλ 1λͺ μ΄μ nλͺ μ΄νμ΄κ³ μ€λ³΅λλ λ²νΈλ μμ΅λλ€.
- μ¬λ²μ 체μ‘볡μ κ°μ Έμ¨ νμμ μλ 1λͺ μ΄μ nλͺ μ΄νμ΄κ³ μ€λ³΅λλ λ²νΈλ μμ΅λλ€.
- μ¬λ² 체μ‘λ³΅μ΄ μλ νμλ§ λ€λ₯Έ νμμκ² μ²΄μ‘볡μ λΉλ €μ€ μ μμ΅λλ€.
- μ¬λ² 체μ‘볡μ κ°μ Έμ¨ νμμ΄ μ²΄μ‘볡μ λλλΉνμ μ μμ΅λλ€. μ΄λ μ΄ νμμ 체μ‘볡μ νλλ§ λλλΉνλ€κ³ κ°μ νλ©°, λ¨μ 체μ‘λ³΅μ΄ νλμ΄κΈ°μ λ€λ₯Έ νμμκ²λ 체μ‘볡μ λΉλ €μ€ μ μμ΅λλ€.
μ μΆλ ₯ μ
5 | [2, 4] | [1, 3, 5] | 5 |
5 | [2, 4] | [3] | 4 |
3 | [3] | [1] | 2 |
μ μΆλ ₯ μ μ€λͺ
μμ #1
1λ² νμμ΄ 2λ² νμμκ² μ²΄μ‘볡μ λΉλ €μ£Όκ³ , 3λ² νμμ΄λ 5λ² νμμ΄ 4λ² νμμκ² μ²΄μ‘볡μ λΉλ €μ£Όλ©΄ νμ 5λͺ
μ΄ μ²΄μ‘μμ
μ λ€μ μ μμ΅λλ€.
μμ #2
3λ² νμμ΄ 2λ² νμμ΄λ 4λ² νμμκ² μ²΄μ‘볡μ λΉλ €μ£Όλ©΄ νμ 4λͺ
μ΄ μ²΄μ‘μμ
μ λ€μ μ μμ΅λλ€.
function solution(n, lost, reserve) {
var answer = 0;
// lostμ reserve λλ€ μλ λ²νΈλ₯Ό μ κ±°
let realLost = lost.filter(x => !reserve.includes(x));
let realReserve = reserve.filter(x => !lost.includes(x));
// λ°°μ΄ lostμ νμλ€μκ² reserve λ°°μ΄μ νμλ€μ΄ λΉλ €μ£Όλ©΄ λ°°μ΄ lostκΈΈμ΄κ° μ€μ΄λ λ€.
// μ΄ nλͺ
μμ reserve νμλ€μκ² λΉλ¦¬μ§ λͺ»ν νμ μλ₯Ό λΉΌλ©΄ μ΅λκ°
answer = n - realLost.filter(a => {
// μ¬λ²μ΄ μλ νμμ λ²νΈκ° μλ νμμ λ²νΈμ μ°¨μ΄κ° 1 μ΄νμΈ νμμ μ°Ύλλ€.
let b = realReserve.find(r => Math.abs(r-a) <= 1);
// λ§μ½ μμΌλ©΄ trueλ₯Ό λ°ννμ¬ μ’
λ£
if(!b)
return true;
// μ°Ύμ νμμ λ²νΈλ₯Ό μ§μ΄λ€.
realReserve = realReserve.filter(r => r !== b);
}).length;
return answer;
}
μλμ κ°μ΄ lostμ reserveμ λμμ λ€μ΄κ° μλ₯Ό μ κ±°ν΄μ€λ€. μλνλ©΄, μ¬λ²μ΄ μλ νμμ΄ λλλΉν κ²½μ°, νλμ 체μ‘λ³΅λ§ κ°μ§ νμλ€κ³Ό κ°μ μ·¨κΈμ λ°κΈ° λλ¬Έμ μ κ±°ν΄μ€λ€.
// lostμ reserve λλ€ μλ λ²νΈλ₯Ό μ κ±°
let realLost = lost.filter(x => !reserve.includes(x));
let realReserve = reserve.filter(x => !lost.includes(x));
realLostμ νμμ λ²νΈκ° realReserveμ νμμ λ²νΈμμ μ°¨κ° 1μ΄νμΈ κ²½μ°λ₯Ό μ°Ύλλ€.
μλνλ©΄, realReserveμ νμμ΄ λ°λ‘ μμμλ realLost νμμκ² μ²΄μ‘볡μ λΉλ €μ€ μ μκΈ° λλ¬Έμ΄λ€.
λ§μ½ μ°Ύμ§ λͺ»νλ€λ©΄, λΉλ €μ€ μ μκΈ° λλ¬Έμ trueλ₯Ό λ°ννμ¬ λ€μ realLost νμμ λ²νΈλ₯Ό νμνκ³ μμ κ°μ΄ λ°λ³΅νλ€.
realLost νμλ€μ λͺ¨λ νν°λ§ν νμ realLostμ κΈΈμ΄λ κ²°κ΅ μ²΄μ‘볡 λ°μ§ λͺ»ν νμλ€λ§ λ¨μμλ€.
λ°λΌμ, μ΄ nλͺ μμ realLostμ κΈΈμ΄λ₯Ό λΉΌλ©΄ μ²΄μ‘ μμ μ λ€μ μ μλ μ΅λ νμμ μλ₯Ό ꡬν μ μλ€.
answer = n - realLost.filter(a => {
// μ¬λ²μ΄ μλ νμμ λ²νΈκ° μλ νμμ λ²νΈμ μ°¨μ΄κ° 1 μ΄νμΈ νμμ μ°Ύλλ€.
let b = realReserve.find(r => Math.abs(r-a) <= 1);
// λ§μ½ μμΌλ©΄ trueλ₯Ό λ°ννμ¬ μ’
λ£
if(!b)
return true;
// μ°Ύμ νμμ λ²νΈλ₯Ό μ§μ΄λ€.
realReserve = realReserve.filter(r => r !== b);
}).length;
'π Algorithm > Solved' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] μ‘°μ΄μ€ν± (Javascript) (0) | 2021.01.19 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] νκ² λλ² (Javascript) (1) | 2021.01.12 |
[νλ‘κ·Έλλ¨Έμ€] λͺ¨μκ³ μ¬ (Javascript) (0) | 2021.01.10 |
[νλ‘κ·Έλλ¨Έμ€] Kλ²μ§Έ μ (Javascript) (0) | 2021.01.07 |
[νλ‘κ·Έλλ¨Έμ€] μμ£Όνμ§ λͺ»ν μ μ (Javascript) (0) | 2021.01.07 |