[React/Axios] ๐Ÿคฌ Axios message: 'Network Error'(CORS ์˜ค๋ฅ˜)
ยท
Frontend/React
๐Ÿšจ ์˜ค๋ฅ˜ ๋ฐœ์ƒ AxiosError message: 'Network Error' const userInfoPatch = async (userInfo) => { try { // url: ์„œ๋ฒ„ ์ฃผ์†Œ, id: ์‚ฌ์šฉ์ž ์•„์ด๋””, userInfo: ์‚ฌ์šฉ์ž ์ •๋ณด ๊ฐ์ฒด await axios.patch(`${url}/member/${id}`, userInfo).then(() => { alert('์ˆ˜์ •์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.'); }); } catch (error) { console.log(error); } }; ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์—์„œ๋Š” ๋ณ„๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์—†์–ด ๋ณด์˜€๊ณ , ์„œ๋ฒ„ ์ธก์—์„œ ๋ถ„๋ช… ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ PATCH์— ๋Œ€ํ•ด ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ GET, POST, DELETE ๋“ฑ ์—ฌ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ• ..
[JavaScript/section 8] 08 - ์ค‘๋ณต์ˆœ์—ด ๊ตฌํ•˜๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 08 - ์ค‘๋ณต์ˆœ์—ด ๊ตฌํ•˜๊ธฐ 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ์ ํžŒ ๊ตฌ์Šฌ์ด ์žˆ๋‹ค. ์ด ์ค‘ ์ค‘๋ณต์„ ํ—ˆ๋ฝํ•˜์—ฌ M๋ฒˆ์„ ๋ฝ‘์•„ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ž…๋ ฅ์˜ˆ์ œ 3 2 ์ถœ๋ ฅ์˜ˆ์ œ 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 ์žฌ๊ท€๋ฅผ ์•Œ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ์ด์ค‘ for ๋ฌธ(๋ฝ‘๋Š” ํšŸ์ˆ˜ 2๋ฒˆ)์„ ์ด์šฉํ•ด ํ’€์—ˆ์„ ๊ฒƒ์ด๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋‹ค์ค‘ for ๋ฌธ๊ณผ ์žฌ๊ท€๋Š” ๊ฐ™๋‹ค๊ณ  ํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์™œ ๋” ๊ฐ„๋‹จํ•œ ์ด์ค‘ for ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ• ๊นŒ ํ•˜๋Š” ์˜๋ฌธ์ด ์ƒ๊ธด๋‹ค..๐Ÿค” for ๋ฌธ์„ ์ด์šฉํ•œ ๋ฐฉ๋ฒ• function solution(n) { let answer = []; for (let i = 1; i
[JavaScript/section 8] 07 - ์ตœ๋Œ€์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 07 - ์ตœ๋Œ€์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ(DFS) ์ด๋ฒˆ ์ •๋ณด ์˜ฌ๋ฆผํ”ผ์•„๋“œ๋Œ€ํšŒ์—์„œ ์ข‹์€ ์„ฑ์ ์„ ๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ ํ˜„์ˆ˜๋Š” ์„ ์ƒ๋‹˜์ด ์ฃผ์‹  N๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ํ•œ๋‹ค. ๊ฐ ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์„ ํ’€์—ˆ์„ ๋•Œ ์–ป๋Š” ์ ์ˆ˜์™€ ํ‘ธ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ์ œํ•œ ์‹œ๊ฐ„ M ์•ˆ์— N๊ฐœ์˜ ๋ฌธ์ œ ์ค‘ ์ตœ๋Œ€์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋‹จ, ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํ•ด๋‹น ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด ํ‘ธ๋Š” ๊ฑธ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ํ•œ ์œ ํ˜•๋‹น ํ•œ ๊ฐœ๋งŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ‘ ํ’€์ด ๋ฐฉ๋ฒ• ์ด์ „์— ํ’€์—ˆ๋˜ ๋ฐ”๋‘‘์ด ์Šน์ฐจ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ์ด ๋ฌธ์ œ ๋˜ํ•œ ์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผ ํ•˜๋Š”์ง€ ๊ฐ์ด ์˜ฌ ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ํ‘ผ๋‹ค, ์•ˆํ‘ผ๋‹ค, 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋งŒ ์กด์žฌํ•œ๋‹ค. ์žฌ๊ท€๋ฅผ ๋Œ๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ํ‘ผ ๊ฒฝ์šฐ sum ๋ณ€์ˆ˜์— ํ•ด๋‹น ๋ฌธ์ œ์˜ ์ ์ˆ˜๋ฅผ ๋ˆ„์ ํ•˜๊ณ  time ๋ณ€์ˆ˜์— ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋ˆ„์ ํ•œ ํ›„ ์ธ์ž๋กœ ๋ณด๋‚ธ..
[JavaScript/section 8] 06 - ๋ฐ”๋‘‘์ด ์Šน์ฐจ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 08 - ๋ฐ”๋‘‘์ด ์Šน์ฐจ(DFS) ์ฒ ์ˆ˜๋Š” ๊ทธ์˜ ๋ฐ”๋‘‘์ด๋“ค์„ ๋ฐ๋ฆฌ๊ณ  ์‹œ์žฅ์— ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ๋‹จ, ์ฒ ์ˆ˜๋Š” Cํ‚ฌ๋กœ๊ทธ๋žจ์„ ๋„˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ทธ์˜ ๋ฐ”๋‘‘์ด๋“ค์„ ๊ฐ€์žฅ ๋ฌด๊ฒ๊ฒŒ ํƒœ์šฐ๊ณ  ์‹ถ์–ดํ•œ๋‹ค. N๋งˆ๋ฆฌ์˜ ๋ฐ”๋‘‘์ด์™€ ๊ฐ ๋ฐ”๋‘‘์ด์˜ ๋ฌด๊ฒŒ W๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ์ฒ ์ˆ˜๊ฐ€ ํŠธ๋Ÿญ์— ํƒœ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ๋ฌด๊ฒŒ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๐Ÿ‘ ํ’€์ด ๋ฐฉ๋ฒ• ๊ฐ๊ฐ์˜ ๋ฐ”๋‘‘์ด๋ฅผ ํŠธ๋Ÿญ์— ํƒœ์šด๋‹ค, ์•ˆ ํƒœ์šด๋‹ค, 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋งŒ ์žˆ์œผ๋ฏ€๋กœ ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋– ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค. ๋‹ค์Œ ๋ถ€๋ถ„์ง‘ํ•ฉ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด์ž. ์žฌ๊ท€๋ฅผ ๋Œ๋ฉด์„œ ํŠธ๋Ÿญ์— ํƒœ์šด ๋ฐ”๋‘‘์ด๋“ค์˜ ๋ฌด๊ฒŒ ํ•ฉ(sum)์„ ๊ตฌํ•œ๋‹ค. sum์ด c(ํŠธ๋Ÿญ์— ํƒœ์šธ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฌด๊ฒŒ)๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—” ๋ฐ”๋กœ return ํ•œ๋‹ค. sum์ด c๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ L(์ด์ง„ ํŠธ๋ฆฌ ๋ ˆ๋ฒจ)์ด ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ๊ฐ™๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๋ถ€๋ถ„..
[JavaScript/section 8] 05 - ํ•ฉ์ด ๊ฐ™์€ ๋ถ€๋ถ„์ง‘ํ•ฉ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 05 - ํ•ฉ์ด ๊ฐ™์€ ๋ถ€๋ถ„์ง‘ํ•ฉ(DFS : ์•„๋งˆ์กด ์ธํ„ฐ๋ทฐ) N๊ฐœ์˜ ์›์†Œ๋กœ ๊ตฌ์„ฑ๋œ ์ž์—ฐ์ˆ˜ ์ง‘ํ•ฉ์ด ์ฃผ์–ด์ง€๋ฉด, ์ด ์ง‘ํ•ฉ์„ ๋‘ ๊ฐœ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‘ ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ์›์†Œ์˜ ํ•ฉ์ด ์„œ๋กœ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด "YES"๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "NO"๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋‘˜๋กœ ๋‚˜๋‰˜๋Š” ๋‘ ๋ถ€๋ถ„์ง‘ํ•ฉ์€ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์ด๋ฉฐ, ๋‘ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ํ•ฉํ•˜๋ฉด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์›๋ž˜์˜ ์ง‘ํ•ฉ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ๐Ÿ‘ ํ’€์ด ๋ฐฉ๋ฒ• ๋ถ€๋ถ„์ง‘ํ•ฉ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ์˜ ํ’€์ด ๊ณผ์ •์„ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๊ฐ€๋ฉด์„œ ์ดํ•ด๋ฅผ ํ–ˆ๋‹ค๋ฉด ์–ด๋ ต์ง€ ์•Š์€ ๋ฌธ์ œ์ด๋‹ค. ์ด๋ฒˆ ๋ฌธ์ œ ๋˜ํ•œ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด์„œ ์ดํ•ด๋ฅผ ํ•˜์˜€๋‹ค. ๋ฐฐ์—ด ์š”์†Œ๋“ค์˜ ์ด ํ•ฉ(total)์„ ๊ตฌํ•œ๋‹ค. ์žฌ๊ท€๋ฅผ ๋Œ๋‹ค๊ฐ€ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ๋Š” idx๊ฐ€ ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ๊ฐ™๋‹ค๋ฉด ์ด ํ•ฉ์—์„œ sum(๋ถ€๋ถ„ ์ง‘ํ•ฉ์˜ ํ•ฉ)์„ ๋บ€ ๊ฐ’์ด sum๊ณผ ๊ฐ™์€์ง€ ๋น„๊ตํ•œ๋‹ค..
[JavaScript/section 8] 04 - ๋ถ€๋ถ„์ง‘ํ•ฉ ๊ตฌํ•˜๊ธฐ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 04 - ๋ถ€๋ถ„์ง‘ํ•ฉ ๊ตฌํ•˜๊ธฐ(DFS) ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง€๋ฉด 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š” ์ง‘ํ•ฉ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ ๊ฐ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ์•„๋ž˜์˜ ์ถœ๋ ฅ์˜ˆ์ œ์™€ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ, ๊ณต์ง‘ํ•ฉ์€ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž…๋ ฅ์˜ˆ์ œ 3 ์ถœ๋ ฅ์˜ˆ์ œ 1 2 3 1 2 1 3 1 2 3 2 3 ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ๊ฐœ์ˆ˜๋Š” 2^N ์ด์ง€๋งŒ ๊ณต์ง‘ํ•ฉ์€ ์ถœ๋ ฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ -1์„ ํ•ด์ค€๋‹ค. N์ด 3์ด๋ฉด ์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ๊ฐœ์ˆ˜๋Š” 7๊ฐœ๊ฐ€ ๋œ๋‹ค. ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ์ฐพ์•„๊ฐˆ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด์„œ ์ดํ•ด๋ฅผ ํ•˜๋ฉด ๋„์›€์ด ๋œ๋‹ค. ๐Ÿ“ ์†Œ์Šค ์ฝ”๋“œ function solution(n) { let answer = []; let ch = Array.from({ length: n + 1 }, () => 0..
[React/Axios] axios delete ์š”์ฒญ ์‹œ body์— data ๋„ฃ๋Š” ๋ฐฉ๋ฒ•
ยท
Frontend/React
๐Ÿšจ ์˜ค๋ฅ˜ ๋ฐœ์ƒ AxiosError message: 'Request failed with status code 400' axios.delete(`${url}/unlike`, { projectId: id, }) axios์˜ delete๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•  ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด data๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• axios.delete๋Š” request body๋ฅผ ์ง€์›ํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค. axios.delete(url[, config]) ๐Ÿ‘ config.data๋Š” request body๋ฅผ ์„ค์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. axios.delete(`${url}/unlike`, { data: { projectId: id, }, }) 2๋ฒˆ์งธ ์ธ์ž์—์„œ data๋ฅผ data: {}..
[JavaScript/section 8] 03 - ์ด์ง„ํŠธ๋ฆฌ ์ˆœํšŒ
ยท
Algorithm/์ธํ”„๋Ÿฐ(inflearn)
๐Ÿ“Œ 03 - ์ด์ง„ํŠธ๋ฆฌ ์ˆœํšŒ(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰) ์ด์ง„ํŠธ๋ฆฌ ์ˆœํšŒ๋ฅผ ์—ฐ์Šตํ•ด๋ณด๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ฒ˜์Œ ๋‚˜์˜จ ๊ฐœ๋…์ด๊ธฐ์— ๋จผ์ € ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ด์ง„ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์•Œ์•„๋ณด์žโ— ๋‚˜๋ฌด๋ฅผ ๋’ค์ง‘์–ด ๋†“์€ ๋ชจ์–‘๊ณผ ๊ฐ™์œผ๋ฉฐ ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ, ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ๊ฐ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์ „์œ„์ˆœํšŒ(preorder), ์ค‘์œ„์ˆœํšŒ(inorder), ํ›„์œ„์ˆœํšŒ(postorder)์˜ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค. ์ „์œ„์ˆœํšŒ(preorder)๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ, ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ ์ˆœ์„œ๋กœ ํƒ์ƒ‰ํ•œ๋‹ค. ์œ„ ์‚ฌ์ง„์˜ ์ˆœํšŒ ๊ฒฐ๊ณผ๋Š” 1 2 4 5 3 6 7์ด๋‹ค. ์ค‘์œ„์ˆœํšŒ(inorder)๋Š” ์™ผ์ชฝ ์ž์‹..
_์„ฑํ˜ธ_
๐ŸŒฑ ์„ฑํ˜ธ ๋ธ”๋กœ๊ทธ