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();