2. λ°°μ΄ (Arrays) Codility Lesson νκ΅μ΄ μ 리본 (JavaScript ver.)
λ°°μ΄ (Arrays)
λ°°μ΄(Array)μ μ¬λ¬ κ°μ νλͺ©μ ν κ³³μ μ μ₯ν μ μλ λ°μ΄ν° ꡬ쑰μ΄λ€. μλ₯Ό λ€μ΄, μΌν λͺ©λ‘μ μκ°ν΄λ³΄μ. κ°κ°μ μ νμ κ°λ³μ μΈ νμ΄μ§μ κΈ°λ‘νμ§ μκ³ , ν νμ΄μ§μ λμ΄νλ κ²μ΄ λ ν¨μ¨μ μ΄λ€. λ°°μ΄μ μ΄λ¬ν κ°λ κ³Ό μ μ¬νλ€. λ§μ°¬κ°μ§λ‘, 1λ λμμ μΌμΌ κΈ°μ¨μ κΈ°λ‘νλ € νλ€λ©΄, 365κ°μ λ³μλ₯Ό λ§λ€κΈ°λ³΄λ€λ νλμ λ°°μ΄μ μ μ₯νλ κ²μ΄ λ μ μ νλ€.
1. λ°°μ΄ μμ± (Creating an Array)
μ°λ¦¬λ μΈ κ°μ μ νμ ν¬ν¨νλ μΌν λͺ©λ‘μ λ§λ€κ³ μ νλ€. μ΄λ¬ν λ°°μ΄μ λ€μκ³Ό κ°μ΄ μμ±ν μ μλ€.
JavaScript μ½λ:
let shopping = ['bread', 'butter', 'cheese'];
λ°°μ΄μ κ° νλͺ©μ μμ(element) λΌκ³ νλ€. λ°°μ΄μ λ©λͺ¨λ¦¬ μ©λμ΄ νμ©νλ ν μΌλ§λ μ§ λ§μ μμλ₯Ό μ μ₯ν μ μμΌλ©°, λΉμ΄μλ λ°°μ΄λ λ§λ€ μ μλ€.
let shopping = [];
λ§μ½ 365μΌ λμμ κΈ°μ¨μ μ μ₯νλ €λ©΄, μ΄κΈ°κ°μ 0μΌλ‘ μ€μ νμ¬ λ°°μ΄μ μμ±ν μ μλ€.
let temperatures = new Array(365).fill(0);
2. λ°°μ΄ μμ μ κ·Ό (Accessing Array Values)
λ°°μ΄μ λͺ¨λ μμμ μ½κ² μ κ·Όν μ μλλ‘ νλ€. κ° μμλ μΈλ±μ€(index) λΌκ³ λΆλ¦¬λ λ²νΈλ₯Ό κ°μ§λ©°, μΈλ±μ€λ 0λΆν° μμνλ μ°μμ μΈ μ μμ΄λ€.
μλ₯Ό λ€μ΄, λ€μ λ°°μ΄μ 보μ.
let shopping = ['bread', 'butter', 'cheese'];
- shopping[0] → 'bread'
- shopping[1] → 'butter'
- shopping[2] → 'cheese'
λ°°μ΄μ νΉμ μμΉμ κ°μ νμΈνλ €λ©΄ λκ΄νΈ([])λ₯Ό μ¬μ©νμ¬ μ κ·Όν μ μλ€.
console.log(shopping[1]); // 'butter'
3. λ°°μ΄ κ° μμ (Modifying Array Values)
λ°°μ΄ μμλ κ°λ³ λ³μμ²λΌ κ°μ λ³κ²½ν μ μλ€. μλ₯Ό λ€μ΄, 42λ²μ§Έ λ μ κΈ°μ¨μ΄ 25λμμμ κΈ°λ‘νλ €λ©΄ λ€μκ³Ό κ°μ΄ νλ©΄ λλ€.
temperatures[42] = 25;
μΌν λͺ©λ‘μ μλ‘μ΄ μ νμ μΆκ°νλ €λ©΄ push λ©μλλ₯Ό μ¬μ©ν μ μλ€.
shopping.push('eggs');
λ°°μ΄μ λ§μ§λ§ μΈλ±μ€μ μλ‘μ΄ μμκ° μΆκ°λλ€.
4. λ°°μ΄ λ°λ³΅λ¬Έ (Iterating Over an Array)
λ°°μ΄μ λͺ¨λ μμλ₯Ό λ°λ³΅ν΄μΌ νλ κ²½μ°κ° λ§λ€. μλ₯Ό λ€μ΄, μΌν λͺ©λ‘μ λͺ κ°μ νλͺ©μ΄ μλμ§ μΈλ €λ©΄ length μμ±μ μ¬μ©ν μ μλ€.
let N = shopping.length;
console.log(N); // 3
μμ : μμ κΈ°μ¨μ κΈ°λ‘ν λ μ μΈκΈ°
JavaScript μ½λ:
function countNegativeTemperatures(temperatures) {
let days = 0;
for (let temp of temperatures) {
if (temp < 0) {
days++;
}
}
return days;
}
μ΄ ν¨μλ λ°°μ΄μ κ° μμλ₯Ό μννλ©° μμ κΈ°μ¨μ κΈ°λ‘ν λ μλ₯Ό μΈμ΄ λ°ννλ€.
5. κΈ°λ³Έ λ°°μ΄ μ°μ° (Basic Array Operations)
λ°°μ΄μλ λͺ κ°μ§ κΈ°λ³Έμ μΈ μ°μ°μ΄ μ 곡λλ€.
- λ°°μ΄ κΈΈμ΄: length
console.log([1, 2, 3].length); // 3
- λ°°μ΄ λ°λ³΅: λ°°μ΄μ μμλ₯Ό μ¬λ¬ λ² λ°λ³΅ν μ μλ€.
console.log(Array(3).fill('Hello')); // ['Hello', 'Hello', 'Hello']
- λ°°μ΄ μ°κ²°: λ κ°μ λ°°μ΄μ ν©μΉ μ μλ€.
console.log([1, 2, 3].concat([4, 5, 6])); // [1, 2, 3, 4, 5, 6]
- λ°°μ΄ ν¬ν¨ μ¬λΆ νμΈ: νΉμ μμκ° λ°°μ΄μ μ‘΄μ¬νλμ§ νμΈν μ μλ€.
console.log(['bread', 'butter', 'cheese'].includes('butter')); // true
6. λ°°μ΄ λ€μ§κΈ° (Reversing an Array)
λ°°μ΄ Aκ° μ£Όμ΄μ‘μ λ, ν΄λΉ λ°°μ΄μ λ€μ§λ λ¬Έμ λ₯Ό ν΄κ²°ν΄λ³΄μ.
JavaScript μ½λ:
function reverseArray(A) {
let N = A.length;
for (let i = 0; i < Math.floor(N / 2); i++) {
let k = N - i - 1;
[A[i], A[k]] = [A[k], A[i]];
}
return A;
}
JavaScriptμμλ λ΄μ₯ λ©μλλ₯Ό νμ©νμ¬ λ κ°λ¨νκ² λ€μ§μ μλ μλ€.
A.reverse();