Algorithm Problem/JavaScript

[javascript] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ–‰๋ ฌ ํ…Œ๋‘๋ฆฌ ํšŒ์ „ํ•˜๊ธฐ(2021 Dev-Matching: ์›น ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž(์ƒ๋ฐ˜๊ธฐ))

deo2kim 2021. 8. 9. 17:06
๋ฐ˜์‘ํ˜•

 

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  1. Array.from ์„ ์ด์šฉํ•˜์—ฌ 2์ฐจ์› ํ–‰๋ ฌ ๋งŒ๋“ค๊ธฐ
  2. ํ…Œ๋‘๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ
    1. ๋ฒ”์œ„ ๋‚ด์—์„œ ํ…Œ๋‘๋ฆฌ๋งŒ ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜, ์™ผ์ชฝ, ์œ„๋กœ ์ฐจ๋ก€๋กœ ์ด๋™
    2. ์ด๋™ํ•˜๋ฉด์„œ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ, 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ฐ”๊ฟ”์ค€๋‹ค(ํšŒ์ „)
  3. ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ answer ์— ์ €์žฅ

๐Ÿ’จ 2์ฐจ์› ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ Array.from,

๋ฐฐ์—ด์˜ ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ Math.min.apply(null, []); ์ด๊ฒƒ ๋ณด๋‹ค๋Š” Math.min(...[]); ์ด ์ข‹์•„๋ณด์ž„(์ผ๋‹จ ๊ฐ€๋…์„ฑ)

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

function solution(rows, columns, queries) {
    var answer = [];

    // 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” 2์ฐจ์› ํ–‰๋ ฌ ๋งŒ๋“ค๊ธฐ
    const arr = Array.from(Array(rows), () => new Array(columns));
    let num = 1
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i].length; j ++) {
            arr[i][j] = num++;
        }
    }
    
    // ํ…Œ๋‘๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ
    queries.forEach(v => {
        const newV = v.map(e => e - 1);
        const border = [];
        
        let i = newV[0]
        let j = newV[1]
        let changeNumber = arr[i+1][j];
        // 1. ์˜ค๋ฅธ์ชฝ ์ด๋™
        while (j <= newV[3]) {
            border.push(arr[i][j]);
            [arr[i][j], changeNumber] = [changeNumber, arr[i][j]];
            j++;
        }
        j--; i++;
        // 2. ์•„๋ž˜๋กœ ์ด๋™
        while (i <= newV[2]) {
            border.push(arr[i][j]);
            [arr[i][j], changeNumber] = [changeNumber, arr[i][j]];
            i++;
        }
        i--; j--;
        // 3. ์™ผ์ชฝ์œผ๋กœ ์ด๋™
        while (j >= newV[1]) {
            border.push(arr[i][j]);
            [arr[i][j], changeNumber] = [changeNumber, arr[i][j]];
            j--;
        }
        j++; i--;
        // 4. ์™ผ์ชฝ์œผ๋กœ ์ด๋™
        while (i > newV[0]) {
            border.push(arr[i][j]);
            [arr[i][j], changeNumber] = [changeNumber, arr[i][j]];
            i--;
        }        
        answer.push(Math.min(...border));
    });
    return answer;
}

console.log(solution(6, 6, 	[[2,2,5,4],[3,3,6,6],[5,1,6,3]]));
console.log(solution(3,3,[[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]]	));
console.log(solution(100, 97, [[1,1,100,97]]	));

 

 

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

 

๋ฐ˜์‘ํ˜•