์•Œ๊ณ ๋ฆฌ์ฆ˜ & ๋ฌธ์ œํ’€์ด

๋ฌธ์ œ ๋‚ด์šฉ ํ’€์ด๐Ÿ™Ž๐Ÿป‍โ™‚๏ธ function solution(n) { const result = (n + "") .split("") .sort((a, b) => b - a) .join(""); return parseInt(result); } ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜์„ ํ†ตํ•ด ๋ณ€ํ™˜ split์œผ๋กœ ๊ฐ์š”์†Œ๋ฅผ ๋‚˜๋ˆ ์ฃผ๊ณ  sort๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ํ›„ ๊ฐ ์š”์†Œ๋ฅผ join์œผ๋กœ ํ•ฉ์ณ์ฃผ๊ณ  ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ด ๋ฆฌํ„ดํ•œ๋‹ค. * ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜์„ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด ๋ดค๋Š”๋ฐ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ์ฃผ๋Š”๊ฒŒ ๋” ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. (toString ๋“ฑ)
๋ฌธ์ œ ๋‚ด์šฉ ํ’€์ด๐Ÿ™Ž๐Ÿป‍โ™‚๏ธ function solution(n) { return n .toString() .split("") .map((v) => Number(v)) .reverse(); } ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ. split์œผ๋กœ ๊ฐ๊ฐ์˜ ์š”์†Œ๋กœ ์ž˜๋ผ ์ฃผ๊ธฐ. map์œผ๋กœ ์ˆœํšŒ๋ฅผ ๋Œ๋ฉฐ ํƒ€์ž… ๋„˜๋ฒ„๋กœ ๋ณ€๊ฒฝ ๋ฆฌ๋ฒ„์Šค ๋ฉ”์„œ๋“œ๋กœ ๋ฐ˜๋Œ€๋กœ ๋Œ๋ ค์„œ ๋ฐ˜ํ™˜!!! ๋” ์ข‹์€ ํ’€์ด function solution(n) { return n .toString() .split("") .map(Number) .reverse(); } map์˜ ์ธ์ž๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ๊ธฐ๋ณธ์ธ์ค„ ์•Œ์•˜๋Š”๋ฐ ๊ทธ๋ƒฅ Number๋งŒ ๋„˜๊ฒจ์ค˜๋„ ๊ฐ€๋Šฅํ–ˆ๋‹ค..(์ถฉ๊ฒฉ)
๋ฌธ์ œ ๋‚ด์šฉ ํ’€์ด๐Ÿ™Ž๐Ÿป‍โ™‚๏ธ function solution(n) { const squareRoot = Math.sqrt(n); return Number.isInteger(squareRoot) ? (squareRoot + 1) * (squareRoot + 1) : -1; } sqrt ๋ฉ”์„œ๋“œ๋Š” ์ œ๊ณฑ๊ทผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฆ‰ ํƒ€๊ฒŸ ๊ฐ’์—๊ฒŒ ๋ฃจํŠธ๋ฅผ ์”Œ์›Œ์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์†Œ๋ฆฌ. ์ฃผ์–ด์ง„ n์— sqrt๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์–‘์˜ ์ •์ˆ˜์˜ ์ œ๊ณฑ์ด๋ผ๋ฉด ์ •์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๊ทธ ์ดํ›„์—๋Š” ์ •์ˆ˜์ธ์ง€ ํŒ๋‹จํ•˜์—ฌ boolean ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” isInteger๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ ์ •์ˆ˜๋ผ๋ฉด ์ œ๊ณฑ์˜ +1 ๊ฐ’์„ ๊ณฑํ•ด์„œ ๋ฆฌํ„ด ์ •์ˆ˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ์—๋Š” ์กฐ๊ฑด๋Œ€๋กœ -1 ์„ ๋ฆฌํ„ดํ•œ๋‹ค ํ”ผ๋“œ๋ฐฑ ํ’€์ด function solution(n) { const squareRoot..
๋ฌธ์ œ ๋‚ด์šฉ ํ’€์ด๐Ÿ™Ž๐Ÿป‍โ™‚๏ธ function solution(n) { let convertedNumber = n .toString() .split("") .map((v) => Number(v)); return convertedString.reduce((acc, cur) => acc + cur); } ์ฃผ์–ด์ง„ ์ˆซ์ž n์„ ๋ฌธ์ž์—ด๋กœ ํƒ€์ž…๋ณ€๊ฒฝ. split์„ ์ด์šฉํ•ด ๊ฐ๊ฐ์˜ ์š”์†Œ๋กœ ๋ฐฐ์—ด๋ฐ˜ํ™˜. map์œผ๋กœ ์ˆœํšŒ๋ฅผ ๋Œ๋ฉฐ ์ˆซ์ž๋กœ ๋ณ€ํ™˜. reduce๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ „๋ถ€ ๋”ํ•ด์ค€๋‹ค. ๋” ์ข‹์€ ํ’€์ด function solution(n) { return n .toString() .split("") .reduce((acc, cur) => acc + Number(cur), 0); } 1 ์—์„œ 2 ๊นŒ์ง€๋Š” ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๊ณ  ๊ตณ์ด map๋ฉ”์†Œ๋“œ๋ฅผ..
๋ฌธ์ œ ๋‚ด์šฉ ํ’€์ด๐Ÿ™Ž๐Ÿป‍โ™‚๏ธ function solution(a, b) { const resultDay = new Date(2016, a - 1, b); switch (resultDay.getDay()) { case 0: return "SUN"; case 1: return "MON"; case 2: return "TUE"; case 3: return "WED"; case 4: return "THU"; case 5: return "FRI"; case 6: return "SAT"; } } switch๋ฅผ ์ด์šฉํ•ด ํ’€์–ด๋ดค๋‹ค. ํ•ด๋‹นํ•˜๋Š” ๋‚ ์งœ์˜ Date๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ณ  getDay ๋ฉ”์„œ๋“œ ๋ฆฌํ„ด๊ฐ’์— ๋”ฐ๋ผ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์คฌ๋‹ค. ๋‹ค๋ฅธ๋ถ„ ํ’€์ด function solution(a, b) { const days = ["SUN", "M..
Learned SOLID ์›์น™์— ๋Œ€ํ•ด ์•Œ๊ฒŒ๋˜์—ˆ๊ณ  ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์—์„œ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋‹ค์‹œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ map์„ ์ด์šฉํ•˜๊ธฐ๋ณด๋‹ค reduce๋ฉ”์„œ๋“œ๋กœ ํ•œ๋ฒˆ์— ๋๋‚ด๋Š” ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. getDay ๋ฉ”์„œ๋“œ ์ด์šฉ์‹œ ๋ฐ˜ํ™˜๊ฐ’์ด ์ˆซ์ž์ธ์ ์„ ์ด์šฉํ•ด ๋ฐฐ์—ด์˜ index๊ฐ’์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. Liked reduce๊ฐ€ ์ข€ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์„œ ์‚ฌ์šฉ์„ ํ”ผํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ๊ฐ์„ ์žก์•˜๋‹ค. ์ ์  ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ๋ฐฐ์›Œ๊ฐ€๊ณ  ์žˆ๋‹ค (๋‹จ์ผ์›์น™, ๋Ž์Šค๋Š” 3์ดํ•˜, ํ•จ์ˆ˜๋Š” 15์ค„ ์ดํ•˜ ๋“ฑ) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์€ ์•„์ง๊นŒ์ง€๋Š” ๋ณด๋ฉด ๋ฐ”๋กœ ๋– ์˜ค๋ฅธ๋‹ค๐Ÿ‘ ์‹œ๊ฐ„์„ ๋‚˜๋ฆ„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ์ค‘์ด๋‹ค Lacked ๋งŽ์€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐฐ์šด๋งŒํผ ์ •ํ™•ํ•œ ์‚ฌ์šฉ๋ฒ•์ด ํ—ท๊ฐˆ๋ฆฐ๋‹ค.. ์‚ฌ์šฉํ•  ๋•Œ ๋ฌด์Šจ์—ญํ• ์ด๊ณ  ์ด๊ฑธ ์จ์•ผํ•œ๋‹ค๋Š”๊ฑด ์•Œ์ง€๋งŒ ..
๋ฌธ์ œ ๋‚ด์šฉ ํ’€์ด๐Ÿ™Ž๐Ÿป‍โ™‚๏ธ function solution(s, n) { const result = []; for (let string of s) { let convertedString = string === " " ? " " : string.charCodeAt(); const notblank = !(convertedString === " "); if (notblank && convertedString 90) { convertedString -= 26; } } if (notblank && convertedString >= 97) { convertedString += n; if (convertedString > 122) { convertedString -= 26; } } notblank ? result.pu..
Greedy Algorithm ์ด๋ž€? ๋ง ๊ทธ๋Œ€๋กœ ํƒ์š•์Šค๋Ÿฌ์šด, ์š•์‹ฌ ๋งŽ์€ ์ด๋ผ๋Š” ๋œป์ด๋‹ค. ๋งค๋ฒˆ ์„ ํƒ์„ ํ•  ๋•Œ๋งˆ๋‹ค ํ•ญ์ƒ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•œ๋‹ค. ๊ทธ๋ฆฌ๋””๋Š” ๋งค ์„ ํƒ(์ง€์—ญ์ )์œผ๋กœ๋Š” ์ตœ์„ ์„ ํƒํ•˜์ง€๋งŒ ๊ทธ ์„ ํƒ๋“ค์ด ์ตœ์ข…(์ „์—ญ์ )์œผ๋กœ ๋ดค์„ ๋•Œ ์ตœ์„ ์ด๋ผ๋Š” ๋ณด์žฅ์€ ์—†๋‹ค. ๋งค์ˆœ๊ฐ„ ์ตœ์ ์„ ๋”ฐ๋ผ๊ฐ€๋ฉด ex) 1-1-1-100 ๋ณด๋‹ค๋Š” 1-1-10-10์ด ์ „์ฒด์ ์œผ๋กœ ๋ดค์„๋•Œ๋Š” ๋” ์งง์€ ๊ธธ ์ด๊ธฐ ๋•Œ๋ฌธ. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์†์„ฑ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์„ฑ๋ฆฝํ•˜๋ ค๋ฉด ๋‘๊ฐ€์ง€์˜ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค. ํƒ์š• ์„ ํƒ ์†์„ฑ (Greedy Choice Property) : ์ด์ „์˜ ์„ ํƒ์ด ๋‹ค์Œ ์„ ํƒ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ (optimal substructure) : ๋งค ์„ ํƒ์˜ ์ˆœ๊ฐ„์˜ ์ตœ์„ ์ด ์ „์—ญ์ ์— ๋Œ€ํ•œ ์ตœ์„ ์ด์–ด์•ผ ํ•œ๋‹ค. ์ดํ•ด๋ฅผ ์œ„ํ•œ ์˜ˆ์‹œ ๋ฐ ๋ฌธ์ œ ๋งˆ์‹œ..
YunCow
'์•Œ๊ณ ๋ฆฌ์ฆ˜ & ๋ฌธ์ œํ’€์ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (5 Page)