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

     

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€