์ „์ฒด ๊ธ€ 36

[SQL] SQL ์ฝ”๋”ฉํ…Œ์ŠคํŠธ 10๋ถ„์ „ ์™ธ์›Œ์•ผ ํ•  ๊ณต์‹๋“ค

SQL ๋ช…๋ น์–ด ์‹คํ–‰ ์ˆœ์„œ์‹ค์ œ ์‹คํ–‰ ์ˆœ์„œFROM - ํ…Œ์ด๋ธ” ์ง€์ • ๋ฐ ์กฐ์ธWHERE - ํ–‰ ํ•„ํ„ฐ๋ง (์ง‘๊ณ„ ์ „)GROUP BY - ๊ทธ๋ฃนํ™”HAVING - ๊ทธ๋ฃน ํ•„ํ„ฐ๋ง (์ง‘๊ณ„ ํ›„)SELECT - ์ปฌ๋Ÿผ ์„ ํƒ ๋ฐ ๊ณ„์‚ฐDISTINCT - ์ค‘๋ณต ์ œ๊ฑฐORDER BY - ์ •๋ ฌLIMIT/OFFSET - ๊ฒฐ๊ณผ ๊ฐœ์ˆ˜ ์ œํ•œ ์˜ˆ์‹œSELECT department, COUNT(*) as emp_countFROM employeesWHERE salary > 3000 -- ์ง‘๊ณ„ํ•จ์ˆ˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€GROUP BY departmentHAVING COUNT(*) > 5 -- ์ง‘๊ณ„ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋ŠฅORDER BY emp_count DESCLIMIT 10;FROM employees - employees ํ…Œ์ด๋ธ” ๊ฐ€์ ธ์˜ค๊ธฐWHERE salary > 3000 - ๊ธ‰..

[JS hash] object vs Map vs Set ์ฐจ์ด

Object vs Map vs SetObjectconst obj = {};obj.key = 'value';obj['key2'] = 'value2';// ํŠน์ง•- ํ‚ค: ๋ฌธ์ž์—ด ๋˜๋Š” Symbol๋งŒ ๊ฐ€๋Šฅ- ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ ์กด์žฌ (๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ๋“ค ์ƒ์†)- ์ˆœ์„œ ๋ณด์žฅ ์•ˆ ๋จ (ES2015 ์ดํ›„ ์ผ๋ถ€ ๋ณด์žฅ)Mapconst map = new Map();map.set('key', 'value');map.set(1, 'number key');map.set(obj, 'object key');// ํŠน์ง• - ํ‚ค: ๋ชจ๋“  ํƒ€์ž… ๊ฐ€๋Šฅ (๊ฐ์ฒด, ์›์‹œ๊ฐ’ ๋ชจ๋‘)- ํฌ๊ธฐ: map.size- ์ˆœ์„œ: ์‚ฝ์ž… ์ˆœ์„œ ๋ณด์žฅ- ์ˆœ์ˆ˜ํ•œ ํ•ด์‹œ๋งต (ํ”„๋กœํ† ํƒ€์ž… ์˜ค์—ผ ์—†์Œ)Setconst set = new Set();set.add('value1');set.ad..

js ์ฝ”ํ…Œ 10๋ถ„์ „ ์™ธ์›Œ์•ผ ํ•  ๊ณต์‹๋“ค

Array ๋งŒ๋“ค๊ธฐ// N x M ๊ฒฉ์ž (0์œผ๋กœ ์ดˆ๊ธฐํ™”)const grid = Array.from({length: n}, () => Array(m).fill(0));// N x M ๊ฒฉ์ž (false๋กœ ์ดˆ๊ธฐํ™”)const visited = Array.from({length: n}, () => Array(m).fill(false));// ๊ทธ๋ž˜ํ”„ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธconst graph = Array.from({length: n}, () => []);// ์นด์šดํŒ… ๋ฐฐ์—ดconst count = Array(26).fill(0); // ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ// DP ํ…Œ์ด๋ธ”const dp = Array(n + 1).fill(0);const dp2D = Array.from({length: n}, () => Array(m).fill(0..

[JS์ฝ”ํ…Œ] javascript๋กœ ํ ๊ตฌํ˜„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‚ด์žฅ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ x๋ฐฐ์—ด์„ ์ด์šฉํ•ด ์ง์ ‘ ๊ตฌํ˜„ ํ›„ ์‚ฌ์šฉ class Queue { items = []; front = 0; rear = 0; push(item) { this.items.push(item); this.rear++; } pop(){ return this.item[this.front++]; } isEmpty() { return this.front === this.rear; }}

[JS ์ฝ”ํ…Œ] LeetCode 2722. Join Two Arrays by ID

๋ฌธ์ œ ๋งํฌhttps://leetcode.com/problems/join-two-arrays-by-id/description/?envType=study-plan-v2&envId=30-days-of-javascript1. ๋‘ ๋ฐฐ์—ด์„ ํ•ฉ์น˜๋ฉด์„œ, id๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ arr2๋กœ overrideconst merged = [...arr1, ...arr2] .reduce((acc, item) => { acc.set(item.id, item); return acc; }, new Map());2. ๋‘ ๋ฐฐ์—ด์„ ํ•ฉ์น˜๋ฉด์„œ, id๊ฐ’์ด ๊ฐ™์ง€๋งŒ arr1์—๋งŒ ์žˆ๋Š” ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ, ๋ณ‘ํ•ฉ (๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•œ ์ผ€์ด์Šค) const merged = [...arr1, ...arr2].reduce((acc, item) => {..

[JS] Rest Syntax

1. Rest Syntax๋ž€?Rest Syntax๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ „๋‹ฌ๋œ ๋ชจ๋“  ์ธ์ž๋ฅผ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„๋“ค์ด๋Š” ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์•ž์— ...์„ ๋ถ™์ด๋ฉด, ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์ธ์ž๋“ค์„ ๋ฐฐ์—ด๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์˜ˆ์ œ:function f(...args) { const sum = args[0] + args[1]; return sum;}console.log(f(3, 4)); // 7f(3, 4)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด, ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ args๋Š” [3, 4]๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.์ด์ฒ˜๋Ÿผ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋œ ๋ชจ๋“  ์ธ์ž๋ฅผ ๋ฐฐ์—ด๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.2. ์™œ Rest Syntax๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?์ฒ˜์Œ์—๋Š” "๊ทธ๋ƒฅ ๋ฐฐ์—ด์„ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋ฉด ๋˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€?"๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Rest Syntax๋Š” ๊ฐ€๋ณ€์ ์ธ..

[JS] Arrow Syntax vs Function Syntax

ํ•จ์ˆ˜๊ฐ€ ๊ฐ์ฒด๋ผ๋Š” ์‚ฌ์‹ค์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žญ ์–ธ์–ด์™€ ๊ตฌ๋ณ„๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ค‘์š”ํ•œ ํŠน์ง•์ด๋‹ค.- ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋”ฅ๋‹ค์ด๋ธŒ, ์ด์‘๋ชจJS ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋กœ์ง์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ์‹๋ณ„์ž๋ฅผ ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ , ๊ฑฐ๊ธฐ์— ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•จ์ผ๊ธ‰๊ฐ์ฒด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜๋Š” ๊ฐ’์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๊ฑฐ๋‚˜, ํ”„๋กœํผํ‹ฐ ๊ฐ’ ๋˜๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ. ๊ฐ’์˜ ์„ฑ์งˆ์„ ๊ฐ–๋Š” ๊ฐ์ฒด๋ฅผ ์ผ๊ธ‰๊ฐ์ฒด ๋ผ๊ณ  ํ•จ// ๊ธฐ๋ช… ํ•จ์ˆ˜ ํ‘œํ˜„์‹var add = function foo (x,y) { return x+y;};// ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž๋กœ ํ˜ธ์ถœconsole.log(add(2,5)); //7// ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ํ˜ธ์ถœ -> ReferenceError// ํ•จ์ˆ˜ ์ด๋ฆ„์€ ํ•จ์ˆ˜ ๋ชธ์ฒด ๋‚ด๋ถ€์—์„œ๋งŒ ์œ ํšจํ•œ..

[LeetCode] 2667 create-hello-world-function

โœ” ๋ฌธ์ œ ๋งํฌhttps://leetcode.com/problems/create-hello-world-function/editorial/โœ” editorial ํ•™์Šต1. ์ต๋ช…ํ•จ์ˆ˜var f = function(a, b) { const sum = a + b; return sum;}console.log(f(3, 4)); // 7- ๋ฌด๊ธฐ๋ช… ํ•จ์ˆ˜ 2. ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜var res = (function () { var a = 3; var b = 5; return a + b;}())console.log(res); // 15res = (function (a, b) { return a * b;}(3, 5))console.log(res); // 15- ์ผ๋ฐ˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ธ์ˆ˜..

[์›น] canonical url

๊ตฌ๊ธ€ ๊ณต์‹ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™” ๋ฌธ์„œ ์ฐธ๊ณ  https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls?hl=ko#rel-canonical-link-method URL ํ‘œ์ค€ํ™” ๋ฐ ํ‘œ์ค€ ํƒœ๊ทธ | Google ๊ฒ€์ƒ‰ ์„ผํ„ฐ | ๋ฌธ์„œ | Google Developers ์‚ฌ์ดํŠธ์— ์ค‘๋ณต ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ Google์€ ํ‘œ์ค€ URL์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ URL ๋ฐ ์ค‘๋ณต URL ํ†ตํ•ฉ ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”. developers.google.com - ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Ÿฌ URL๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์„œ๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์œ ์‚ฌํ•œ ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ: ํ•œ ํŽ˜์ด์ง€์— ๋ชจ๋ฐ”์ผ ๋ฒ„์ „๊ณผ ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์ด ๋ชจ๋‘ ์žˆ๋Š” ๊ฒฝ์šฐ) - Google์€ ์ด..