λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

[λ°±μ€€/Node.js] 10811번 풀이 || JavaScript

728x90

μš” 문제 μ²˜μŒμ— ν’€ λ•Œ λ„ˆλ¬΄ 였래 κ±Έλ €μ„œ ν¬κΈ°ν•˜κ³  였늘 μ•½ 2μ‹œκ°„ 반 정도 κ±Έλ €μ„œ ν‘Ό λ“― ν•˜λ‹€.

문제 ν’€ λ•Œ μ΄λ ‡κ²Œ 길게 μ½”λ“œλ₯Ό μ§  건 처음이고, 계속 될 λ“― ν•˜λ©΄μ„œ μ•ˆλΌμ„œ λšœμ‹œλšœμ‹œ ν•˜λ©΄μ„œ ν’€μ—ˆλ‹€.

 

무튼 ν’€κΈ΄ ν’€μ—ˆμœΌλ‹ˆ 속이 μ‹œμ›ν•˜λ‹€!

 

let input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n").map(i => i.split(" "));

const basketCount = +input[0][0];
const loop = +input[0][1];

let baskets = [];
let revRange = [];
for (let i = 0; i < basketCount; i++) {
    baskets.push(i + 1);
    revRange.push(i + 1);
}

for (let i = 1; i <= loop; i++) {
    let from = +input[i][0];
    let to = +input[i][1];
    revRange = baskets.map(v => v);
    baskets = reverseFn(from, to, revRange, baskets);
}
console.log(...baskets);

function reverseFn(from, to, revRange, baskets) {
    revRange = revRange.splice(from - 1, to - from + 1).reverse();
    for (i = 0; i < to - from + 1; i++) {
        baskets[from + i - 1] = revRange[i];
    };
    return baskets;
}

 

μ• λ¨Ήμ—ˆλ˜ 포인트

1. λ°°μ—΄μ˜ 얕은 볡사. 

splice λ₯Ό μ΄μš©ν•΄μ„œ ν’€μ—ˆλŠ”λ° 처음 λ§Œλ“  λ°”κ΅¬λ‹ˆ 배열을 볡사해 λ°˜μ „ μ‹œν‚€λ‹ˆ,

μ›λž˜ μœ„μΉ˜μ— 있던 λ°”κ΅¬λ‹ˆ ν•¨μˆ˜λ„ ν•΄λ‹Ή λ²”μœ„ 만큼 μ‚¬λΌμ Έμžˆμ—ˆλ‹€.

배열을 λ‹€μ‹œ ν•œ basket ν•¨μˆ˜λ₯Ό map ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄λ‚΄λ©΄μ„œ reverse 용 배열에 λ„£μ–΄μ£Όκ³ 

κ·Έ λ‹€μŒμ— splice둜 가곡을 ν–ˆλ‹€.

 

2. ν•¨μˆ˜ for λ¬Έμ—μ„œ for 문의 λ²”μœ„λ₯Ό ~ to κΉŒμ§€λ‘œ μž‘μ€ 점. 

1 2 κ°€ from to 일 λ•ŒλŠ” 문제 μ—†μ§€λ§Œ, 

3 4 인 κ²½μš°μ—λŠ” 3~4 λΌμ„œ μ‹€μ§ˆμ μœΌλ‘œ for문이 λŒμ•„μ•Όν•˜λŠ” λ²”μœ„λŠ” 2 자리 뿐이닀. 

to-from+1 을 ν•΄μ€˜μ•Ό λ°˜μ „ μ‹œν‚€λŠ” 숫자의 κ°œμˆ˜κ°€ λœλ‹€. 

 

3. 좜λ ₯μ‹œ 배열이 μ•„λ‹ˆλΌ λ°°μ—΄ μ•ˆμ˜ μˆ«μžλ“€λ§Œ 좜λ ₯ν•΄μ€˜μ•Όν•œλ‹€.

...basket

 

 

 

 

그리고 λ°±μ€€ ν—ˆλΈŒκ°€ μ–΄λŠμ •λ„ 해결이 λ˜μ–΄, (섀정을 λ°”κΎΈκΈ΄ ν–ˆμ§€λ§Œ)

μ˜€λžœλ§Œμ— λ°±μ€€ 폴더에 κΉƒν—™ μ—…λ‘œλ“œ!

728x90
λ°˜μ‘ν˜•