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

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€