๐Ÿ”ฅ Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.2] 2๊ฐœ ์ดํ•˜๋กœ ๋‹ค๋ฅธ ๋น„ํŠธ (js)

Lennon 2022. 1. 30. 19:29
728x90
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/77885?language=javascript# 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - 2๊ฐœ ์ดํ•˜๋กœ ๋‹ค๋ฅธ ๋น„ํŠธ

 

programmers.co.kr

function solution(numbers) {
    return numbers.map(v => {
        let str = '0'+v.toString(2);
        if(str[str.length-1] === '0') {
            str = str.substring(0, str.length-1) + '1';
        } else {
            const idx = str.lastIndexOf('01');
            str = str.substring(0,idx) + '10' + str.substring(idx+2, str.length);
        }
        
        return parseInt(str, 2);
    })
}

์ด ๋ฌธ์ œ๋Š” ๊ทธ๋ƒฅ ์ง„์ˆ˜๋ณ€ํ™˜ํ•˜๊ณ  ์ˆซ์ž ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉฐ ๋น„๊ตํ•˜๋ฉด์„œ ํ’€๋ฉด 11๋ฒˆ, 12๋ฒˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฌด์กฐ๊ฑด! ๋‚œ๋‹ค.

 

์ง์ˆ˜์ผ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. ์ง์ˆ˜๋ผ๋Š”๊ฑด 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ ๋งจ ๋’ค ์ˆซ์ž๊ฐ€ 0์ผ ๊ฒƒ์ด๋‹ค. ex) 010 => 2, 011 => 3

์ง์ˆ˜์ผ ๋• ๊ธฐ์กด ๊ฐ’๋ณด๋‹ค ํ•˜๋‚˜ ๋†’์ธ ๊ฐ’์ด ํ•ด๋‹น ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž์ด๋‹ค.

 

์ด์ œ ํ™€์ˆ˜์ผ ๋•Œ ์ƒ๊ฐ์„ ํ•ด๋ณด์ž. ํ™€์ˆ˜์ผ ๋• ํ•œ ๊ฐ’๋งŒ ๋ฐ”๊พธ๊ธฐ์—” ๊ฐ’๋“ค์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค. ํ—ˆ๋‚˜ ์กฐ๊ฑด์—์„œ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฒƒ์ค‘์— ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ

๋’ค๋ถ€ํ„ฐ '01' ์„ ์ฐพ๊ณ  ์ด๋ฅผ '10'์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. ๋’ค๋ถ€ํ„ฐ ์ฐพ์œผ๋ฉฐ ๊ฐ’์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ, ํ™€์ˆ˜์—์„  '01'์„ '10'์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์ตœ์„ ์ด๋‹ค. ex) 011 => 101 ,  010101 => 010110

 

์ด๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์œ„์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•