Algorithm/DailyCoding

tiling ์„ธ๋กœ ๊ธธ์ด 2, ๊ฐ€๋กœ ๊ธธ์ด n์ธ 2 x n ๋ณด๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 2 x 1 ํฌ๊ธฐ์˜ ํƒ€์ผ์„ ๊ฐ€์ง€๊ณ  ์ด ๋ณด๋“œ๋ฅผ ์ฑ„์šฐ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋ฌธ์ œ๋Š” ์ผ๋‹จ ์ž‘์€ ์ˆ˜๋ฅผ ์†์ˆ˜ ๊ณ„์‚ฐํ•ด์„œ ๊ทœ์น™์„ ์ฐพ์•„๊ฐ€๋Š” ๊ฒƒ์ด ๋น ๋ฅด๋‹ค. ๋ชจ์•„๋†“๊ณ  ๋ณด๋‹ˆ ๊ทœ์น™์„ฑ์ด ๋ณด์ธ๋‹ค n=1 -> 1 n=2 -> 2 n=3 -> 3 n=4 -> 5 n=5 -> 8 ... ์„ธ๋กœ์˜ ๊ธธ์ด๋Š” ๊ณ ์ •๋œ ์ฑ„๋กœ ๊ฐ€๋กœ์˜ ๊ธธ์ด๋งŒ ๋Š˜์–ด๋‚œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ชผ๊ฐœ์–ด์„œ ์ƒ๊ฐํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. ๊ฒฐ๊ตญ ํ•œ ์นธ์„ ์ฐจ์ง€ํ•˜๋Š” 2x1์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ชจ์–‘์ด ๋ฐ”๋กœ ์ „ (n-1)๊ณผ ๊ฐ™๊ณ , ๋‘ ์นธ์„ ์ฐจ์ง€ํ•˜๋Š” ์ตœ์†Œ 2x2๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ชจ์–‘์ด (n-2)์™€ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ํ”ผ๋ณด๋‚˜์น˜์™€ ์™„์ „ ์œ ์‚ฌํ•œ ์ˆ˜์—ด์ด ๋˜๋Š” ๊ฒƒ. ๋‹จ์ˆœํ•œ ์žฌ๊ท€๋กœ ๋‚˜ํƒ€๋‚ด์–ด ๋ณด๋ฉด let t..
isSubsetOf ๋‘ ๊ฐœ์˜ ๋ฐฐ์—ด(base, sample)์„ ์ž…๋ ฅ๋ฐ›์•„ sample์ด base์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. const isSubsetOf = function (base, sample) { return sample.every((number) => base.includes(number)); } array ๋งค์„œ๋“œ์ธ every, inclueds์‚ฌ์šฉ. -> ์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋‹จ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ๋‹ค. base.sort((a, b) => a - b); sample.sort((a, b) => a - b); for(let i = 0; i < base.length; i++) { if(base[i] === sample[0]) { sample.shift(); } } i..
bubbleSort ์ •์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort)์€ ์—ฌ๋Ÿฌ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์‚ฝ์ž… ์ •๋ ฌ, ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ, ๊ธฐ์ˆ˜ ์ •๋ ฌ ๋“ฑ) ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ณด๋‹ค ํฌ๋ฉด, ๋‘ ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. (swap) ๋‘ ๋ฒˆ์งธ ์š”์†Œ์™€ ์„ธ ๋ฒˆ์งธ ์š”์†Œ๋ณด๋‹ค ํฌ๋ฉด, ๋‘ ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. (swap) 1, 2๋ฅผ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. (๋งˆ์ง€๋ง‰์—์„œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์™€ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๋น„๊ต) 1~3์˜ ๊ณผ์ •์„ ํ•œ ๋ฒˆ ๊ฑฐ์น˜๊ฒŒ ๋˜๋ฉด, ๊ฐ€์žฅ ํฐ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ€๋ ค๋‚ฉ๋‹ˆ๋‹ค. 1~3์˜ ๊ณผ์ •์„ ์ฒซ ์š”์†Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. 5๋ฅผ ํ†ตํ•ด ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ๋ฐ”๋กœ ๋‘ ๋ฒˆ..
fibonacci ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ์ค‘ n๋ฒˆ์งธ ํ•ญ์˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉx) 0๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” 0์ด๊ณ , 1๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” 1์ž…๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ 2๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ถ€ํ„ฐ๋Š” ๋ฐ”๋กœ ์ง์ „์˜ ๋‘ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 7๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋Š” ๊ณผ์ • (n=7)์„ ๋‚˜์—ดํ•ด๋ณด๋ฉด, 0 1 1 = 0 + 1 2 = 1 + 1 3 = 2 + 1 5 = 3 + 2 8 = 5 + 3 13 = 8 + 5 ์ด๋ฅผ ํ•จ์ˆ˜๋กœ ํ‘œํ˜„ํ•ด๋ณด๋ฉด f(n) = f(n-1) + f(n-2) n>=2์ธ ์ž์—ฐ์ˆ˜, f(0) = 0 , f(1) = 1 ์ฆ‰ f(n)์€ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ ์ด n+1 ๊ฐœ๋ฅผ ๋”ํ•˜๊ฒŒ ๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋œ๋‹ค. functio..
largestProductOfThree ์ •์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ 3๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ณฑํ•ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€๊ฐ’์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„น์…˜3๋“ค์–ด ๊ธ‰๊ฒฉํžˆ ์–ด๋ ค์›Œ์ง„ ๋‚œ์ด๋„์— ์˜คํ•จ๋งˆ๋กœ ํ•œ๋Œ€ ๋งž์€ ๊ธฐ๋ถ„.. ใ…Ž_ใ…Ž ์„น์…˜2๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ ๋ฐ์ผ๋ฆฌ์ฝ”๋”ฉ. ์ผ๋‹จ ์ฒ˜์Œ์— ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ์€, ์Œ์ˆ˜์™€ 0์ด ์„ž์—ฌ์žˆ์œผ๋‹ˆ ์ด๊ฑธ ์ฃผ์˜ํ•ด์•ผ๊ฒ ๋‹ค ์‹ถ์—ˆ๋˜ ๊ฑฐ์˜€์Œ. // ๋ฐฐ์—ด ์ค‘ (์ ˆ๋Œ“๊ฐ’์ด) ๊ฐ€์žฅ ํฐ ์ˆ˜ 3๊ฐœ? // ์Œ์ˆ˜๋Š” ์ง์ˆ˜ ๊ฐœ์—ฌ์•ผ ํ•จ. // 3๊ฐœ ์ค‘์— 0์€ ์—†์–ด์•ผ ํ•จ. let arr = [-1, 8, 0, -134, -44] arr.map(Math.abs) = [1, 8, 0, 134, 44] arr.map(Math.abs).sort() = [0, 1, 134, 44, 8] let plus = arr.map(Math.abs) plu..
25๋ฒˆ. tiling ์„ธ๋กœ ๊ธธ์ด 2, ๊ฐ€๋กœ ๊ธธ์ด n์ธ 2 x n ๋ณด๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 2 x 1 ํฌ๊ธฐ์˜ ํƒ€์ผ์„ ๊ฐ€์ง€๊ณ  ์ด ๋ณด๋“œ๋ฅผ ์ฑ„์šฐ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์“ด ๋‹ต let tiling = function (n) { // 2 x 4 ๋ณด๋“œ์— ํƒ€์ผ์„ ๋†“๋Š” ๊ฒฝ์šฐ // 1) ์ฒ˜์Œ์— ์„ธ๋กœ๋กœ ํ•˜๋‚˜ ๋†“๋Š” ๊ฒฝ์šฐ : 2 x 1 + 2 x 3 // 2) ๊ฐ€๋กœ๋กœ ๋†“๋Š” ๊ฒฝ์šฐ (๋ฐ‘์—๋„ ๊ฐ€๋กœ๋กœ ๋†“๊ฒŒ ๋จ) : 2 x 2 + 2 x 2 // => ์ฆ‰ n=4 ์ผ ๋•Œ ๊ฒฝ์šฐ์˜ ์ˆ˜ : n = 2, 3 ์ผ ๋•Œ๋ฅผ ๋”ํ•œ ๊ฒƒ (์žฌ๊ท€) let arr = [0,1,2]; const boxTiling = (n) => { if(arr[n]) return arr[n]; return arr[n] = boxTiling(n-1) + boxTili..
10๋ฒˆ. ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ์—ฐ์†๋œ ํ•œ์ž๋ฆฌ ํ™€์ˆ˜ ์ˆซ์ž ์‚ฌ์ด์— '-'๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. function insertDash(str) { let result = str[0] for (let i = 1; i
9๋ฒˆ. ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๋ฌธ์ž์—ด ๋‚ด์— ์•„๋ž˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 'a'๋กœ ์‹œ์ž‘ํ•ด์„œ 'b'๋กœ ๋๋‚˜๋Š” ๊ธธ์ด 5์˜ ๋ฌธ์ž์—ด 'b'๋กœ ์‹œ์ž‘ํ•ด์„œ 'a'๋กœ ๋๋‚˜๋Š” ๊ธธ์ด 5์˜ ๋ฌธ์ž์—ด function ABCheck(str) { let str1 = str.toLowerCase() for (let i = 0; i
8๋ฒˆ. ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ํ•ด๋‹น ๋ฌธ์ž์—ด์— ๋“ฑ์žฅํ•˜๋Š” ๋‘ ์นธ์˜ ๊ณต๋ฐฑ์„ ๋ชจ๋‘ ํ•œ ์นธ์˜ ๊ณต๋ฐฑ์œผ๋กœ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. function convertDoubleSpaceToSingle(str) { return str.replace(/ /g, ' ') } ๋ณด์ž๋งˆ์ž replace๋กœ ํ’€๋ฉด ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ.. ์‚ฌ์‹ค replace๊ฐ€ ์‹œ๊ฐ„์„ ์—„์ฒญ ์žก์•„๋จน๋Š”๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์–ด์„œ ใ…  ใ…  ์ซŒ ์ฐœ์ฐœํ–ˆ์œผ๋‚˜ ๊ทธ๋ž˜๋„ ๋นจ๋ฆฌ ํ’€์–ด์•ผ์ง€ ์‹ถ์–ด์„œ ์ด๋Œ€๋กœ ์ œ์ถœ.. ์Šคํ„ฐ๋””์› ๋ถ„๋“ค์€ splitํ•ด์„œ ํ’€๊ฑฐ๋‚˜, ๋ ˆํผ๋Ÿฐ์Šค๋„ for๋ฌธ์œผ๋กœ ํ’€์—ˆ๊ธธ๋ž˜ ๋‚˜๋„ ํ•œ๋ฒˆ์”ฉ ๋‹ค์‹œ ํ’€์–ด๋ณด์•„์•ผ ๊ฒ ๋‹ค
7๋ฒˆ. 2์ฐจ์› ๋ฐฐ์—ด(๋ฐฐ์—ด์„ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด)์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ฐ ๋ฐฐ์—ด์„ ์ด์šฉํ•ด ๋งŒ๋“  ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. function convertListToObject(arr) { let obj = {}; for (let i in arr) { if (arr[i].length !== 0 && !(arr[i][0] in obj)){ obj[arr[i][0]]=arr[i][1] } } return obj } ๋นˆ ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ณ , ๋ฐฐ์—ด์„ ์•ˆ์—์„œ ๋นˆ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๊ณ , ์ƒˆ๋กœ ๋งŒ๋“ค ๊ฐ์ฒด๋‚ด์— ๋ฐฐ์—ด๋‚ด ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์จฐ ๊ฐ์ฒด๊ฐ’ (์ค‘๋ณต๊ฐ’์ผ ๊ฒฝ์šฐ ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•ด) ์ด ์—†์„ ๊ฒฝ์šฐ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•ด์คŒ function convertListToObject(arr) { let result = {}; for (let i = 0; i < arr.leng..
6๋ฒˆ. ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋Œ€๋ฌธ์ž์ธ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. function letterCapitalize(str) { let arr = str.split(' ') for (let i = 0; i "nil" console.log(text.substr(2,3)); // => "nil" ๋งŒ์•ฝ indexEnd ๊ฐ€ ์ƒ๋žต๋œ ๊ฒฝ์šฐ, substring() ๋ฌธ์ž์—ด์˜ ๋๊นŒ์ง€ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ indexStart ๊ฐ€ indexEnd์™€ ๊ฐ™์„ ๊ฒฝ์šฐ, substring() ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ indexStart ๊ฐ€ indexEnd๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, substring() ๋ฉ”์„œ๋“œ๋Š” ๋งˆ์น˜ ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ”๊พผ ๋“ฏ ์ž‘๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. .slice() var str = 'The ..
5๋ฒˆ. ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ์ˆœ์„œ๊ฐ€ ๋’ค์ง‘ํžŒ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - ๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ๋’ค์ง‘๋Š” ๋ฐฉ๋ฒ• ์ด์šฉ function firstReverse(str) { return str.split('').reverse().join() } 'ti od nac uoy'์„(๋ฅผ) ์ž…๋ ฅ๋ฐ›์€ ๊ฒฝ์šฐ, 'you can do it'์„(๋ฅผ) ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค Test Result AssertionError: expected 'y,o,u, ,c,a,n, ,d,o, ,i,t' to deeply equal 'you can do it' ์ด๋Ÿฐ ์‹์œผ๋กœ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.. join() ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ–ˆ๋˜ ๊ฒƒ์œผ๋กœ.. .join() var a = ['๋ฐ”๋žŒ', '๋น„', '๋ถˆ']; var myVar1 = a.join(); // myVar1์— '๋ฐ”๋žŒ,๋น„,..
Dong _ hwa
'Algorithm/DailyCoding' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก