๐Ÿ’ป๊ฐœ๋ฐœ๊ณต๋ถ€ 23

useReducer ๋™์ž‘์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ

useReducer๋Š” ์ „์—ญ ์ƒํƒœ๋‚˜ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ณต์œ ๋˜๋Š” ๋ณต์žกํ•œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•จ. ๊ฐ„๋‹จํ•œ๊ฑด useState๋ฅผ ์‚ฌ์šฉํ•จ. ๋‘˜๋‹ค ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ›…์ด๋ผ๋Š”๊ฑด ๋™์ผํ•˜๋‹ค. #์˜ˆ์‹œ - ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” inputState์™€, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” isValid ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •. - ์ด๋•Œ inputState์— ๋”ฐ๋ผ์„œ isValid๋Š” true, false๋กœ ์ƒํƒœ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฒŒ๋œ๋‹ค. ๋‘ ์ƒํƒœ๊ฐ’์ด ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์Œ. - ์š”๋Ÿด๋•Œ useState๋ฅผ ๋‘๋ฒˆ ์ž‘์„ฑํ•˜๊ธฐ๋ณด๋‹ค, useReducer๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค๋Š”๊ฑฐ์ž„! ์ƒํƒœ๋ฅผ ์ •์˜ํ•  ์ปดํฌ๋„ŒํŠธ ๋ฐ”๊นฅ์— reducer ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ์ƒํƒœ๋ฅผ ์ •์˜ํ•˜๊ณ , input์˜ value๊ฐ€ ๋ณ€๊ฒฝ๋ ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋Š” ํŠธ๋ฆฌ๊ฑฐํ•จ์ˆ˜๋„ ์ •์˜ํ•จ. ์ด๋•Œ, ํŠธ๋ฆฌ๊ฑฐํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰..

React Router์˜ Link ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€ ์ด๋™์‹œํ‚ค๊ธฐ

React Router์˜ Link ์ปดํฌ๋„ŒํŠธ์™€ ์ผ๋ฐ˜์ ์ธ HTML ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์˜ ์ฐจ์ด์  #๋ธŒ๋ผ์šฐ์ € ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐฉ์‹ ํƒœ๊ทธ: ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ๋˜๋ฉด์„œ ๋งํฌ๋œ ์ฃผ์†Œ๋กœ ์ด๋™ํ•œ๋‹ค. Link ์ปดํฌ๋„ŒํŠธ: ํด๋ฆญ ์‹œ ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ๋˜์ง€ ์•Š๊ณ , React Router๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™. #SPA์—์„œ์˜ ์‚ฌ์šฉ ํƒœ๊ทธ: SPA์—์„œ๋Š” ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ๋งˆ๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค. Link ์ปดํฌ๋„ŒํŠธ: SPA์—์„œ๋Š” ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ํŽ˜์ด์ง€ ๊ฐ„ ์ „ํ™˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ. ๋™์ ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ

React ๋ฐฐ์—ดํƒ€์ž… ๋ฐ์ดํ„ฐ useState ์ƒํƒœ ์—…๋ฐ์ดํŠธ ์˜ˆ์‹œ(feat. axios)

shoes ๋ผ๋Š” [{}, {}, {}] ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์ด ์žˆ์Œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ๋˜‘๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋“ค์„ shoes์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ ์žํ•จ. ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐฐ์—ด๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐ! ๐Ÿคฉ

JavaScript ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

ES6(ECMAScript 2015) ์—์„œ ์ƒˆ๋กœ ์ƒ๊ธด spread operator. spread operator๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ(iterable) ๊ฐ์ฒด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์œผ๋กœ, ๋ฐฐ์—ด์ด๋‚˜ ๋ฌธ์ž์—ด ๋“ฑ์„ ๊ฐœ๋ณ„ ์š”์†Œ๋กœ ๋ถ„๋ฆฌ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. // ES6์—์„œ๋Š” ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• ์‚ฌ์šฉ ๊ฐ€๋Šฅ const arr1 = [1, 2, 3]; const arr2 = [...arr1, 4, 5]; ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?๐Ÿค” ์›๋ณธ๋ฐฐ์—ด ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋Š” ์ฐธ์กฐ์— ์˜ํ•ด ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ๋Œ€์ž…ํ•˜๋ฉด ์ฐธ์กฐ ์ฃผ์†Œ๋งŒ ๋ณต์‚ฌ๋˜์–ด ๋‘ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋จ. ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• ์‚ฌ์šฉํ• ๋•Œ vs ์‚ฌ์šฉ์•ˆํ• ๋•Œ ์ฐจ์ด์ ์€? // ์›๋ณธ ๋ฐฐ์—ด const originalArray = [..

๋ถ€๋ชจ/์ž์‹ ์ปดํฌ๋„ŒํŠธ ๊ด€๊ณ„

์ปดํฌ๋„ŒํŠธ๊ฐ„์— props ์ „๋‹ฌ ๊ทœ์น™ props๋ฅผ ์ „๋‹ฌํ• ๋•Œ ๋ถ€๋ชจ -> ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฐ˜๋Œ€๋กœ, ์ž์‹ -> ๋ถ€๋ชจ๋กœ๋Š” ์ „๋‹ฌ ๋ถˆ๊ฐ€X ๊ฐ™์€ ๋ฃจํŠธ์— ์œ„์น˜ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ผ๋ฆฌ๋„ ์ „๋‹ฌ ๋ถˆ๊ฐ€X Q. ํŠน์ • State๊ฐ€ ๋ถ€๋ชจ์™€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ ๋‘˜๋‹ค์—์„œ ํ•„์š”ํ•˜๋‹ค. ์ด๋•Œ state ์ •์˜๋Š” ์–ด๋””์— ํ•ด์•ผํ• ๊นŒ? ๐Ÿ‘‰ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ. ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์— ๋งŒ๋“œ๋Š”๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž„.

[JS ์•Œ๊ณ ๋ฆฌ์ฆ˜] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค K๋ฒˆ์งธ ์ˆ˜

https://programmers.co.kr/learn/courses/30/lessons/42748?language=javascript ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - K๋ฒˆ์งธ์ˆ˜ [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr ๐Ÿ“ ๋ฌธ์ œ ๐Ÿ“ ํ’€์ด ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. slice(start, end): start ์ธ๋ฑ์Šค๋ถ€ํ„ฐ end ์ธ๋ฑ์Šค ์ด์ „๊นŒ์ง€ ์Šฌ๋ผ์ด์‹ฑํ•œ ๋ฐฐ์—ด ๋ฐ˜ํ™˜ sort: ์ •๋ ฌ๋ฉ”์†Œ๋“œ push: ๋ฐฐ์—ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์›์†Œ ์ถ”๊ฐ€๋จ ์ฝ”๋“œ ์ž‘์„ฑ์€ ์–ด๋ ต์ง€์•Š์€๋ฐ, sort() ์ •๋ ฌ๋ถ€๋ถ„์—์„œ ์ฃผ์˜ํ• ์ ์ด ์žˆ๋‹ค. ๋งŒ์•ฝ ๋‹ค์Œ๊ณผ๊ฐ™์ด sort()๋งŒ ํ•ด์ฃผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚ ๊ฒƒ์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•ด์„œ ..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋น„๋ฐ€์ง€๋„ Python (์นด์นด์˜ค ๊ธฐ์ถœ)

https://programmers.co.kr/learn/courses/30/lessons/17681?language=python3 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ๋น„๋ฐ€์ง€๋„ ๋น„๋ฐ€์ง€๋„ ๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค programmers.co.kr ํ’€์ด๊ณผ์ • ์š”์•ฝ ๋น„ํŠธ์—ฐ์‚ฐ์ž or์„ ์‚ฌ์šฉํ•œ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋ฅผ ์ด์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•ด์„œ ์ €์žฅํ•œ๋‹ค. ์ด์ง„์ˆ˜ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์”ฉ ํƒ์ƒ‰ํ•˜๋ฉด์„œ 1์€ #์œผ๋กœ, 0์€ ๊ณต๋ฐฑ์œผ๋กœ ๋ฌธ์ž์—ด ์น˜ํ™˜์„ ํ•ด์ฃผ์—ˆ๋‹ค. ์ „์ฒด ์ฝ”๋“œ def solution(n, arr1, arr2): answer = [] dec_arr = list(zip(arr1, arr2)) bin_arr = [..

Python ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํŠœํ”Œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜

๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ• ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŠœํ”Œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. dict = {'a': 4, 'b': 6, 'c': 1} # key, value ๊ฐ’ ๊ฐ๊ฐ ๋ฝ‘์•„๋‚ด๊ธฐ print(dict.keys()) # dict_keys(['a', 'b', 'c']) print(dict.values()) # dict_values([4, 6, 1]) # ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํŠœํ”Œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ result = list(zip(dict.keys(), dict.values())) print(result) # [('a', 4), ('b', 6), ('c', 1)] # value ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ # ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ print(sorted(result, key=lambda x: x[1])) # [('c', 1), ('a',..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํŠœํ”Œ Python (์นด์นด์˜ค ๊ธฐ์ถœ)

https://programmers.co.kr/learn/courses/30/lessons/64065 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํŠœํ”Œ "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr ํ’€์ด๊ณผ์ • ์ค‘๋ณต๋˜๋Š” ์›์†Œ๊ฐ€ ์—†๋Š” ํŠœํ”Œ์„ ์ง‘ํ•ฉ๊ธฐํ˜ธ๋กœ ํ‘œํ˜„๋œ ์ž…๋ ฅ์ด ์ฃผ์–ด์ง„๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํŠœํ”Œ์ด (2, 1, 3, 4)์ธ ๊ฒฝ์šฐ {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}} {{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}} {{1, 2, 3}, {2, 1}, {1, 2, 4,..

JS๊ธฐ์ดˆ | Ajax, JSON ๊ฐœ๋…์ •๋ฆฌ ๋ฐ ํ™œ์šฉ๋ฐฉ๋ฒ•

Ajax๋ž€? Ajax๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๊ฐฑ์‹ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์ด๋‹ค. Ajax๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, http ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ „ํ†ต์ ์ธ ์›นํŽ˜์ด์ง€์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์˜ˆ์ „์˜ ์›นํŽ˜์ด์ง€๋Š” ์™„์ „ํ•œ html ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ง„ html ํŒŒ์ผ์„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „์†ก๋ฐ›์•„ ์›นํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋žœ๋”๋ง ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ™”๋ฉด์ „ํ™˜์„ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด html์„ ์ „์†ก๋ฐ›์•„ ์›นํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์ƒˆ๋กœ๊ณ ์นจ ํ•ด์•ผํ–ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ๋™์ž‘ํ•˜๋ฉด ์–ด๋–ค ๋‹จ์ ์ด ์žˆ์„๊นŒ? 1. ๋ณ€๊ฒฝ๋  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ๋งค๋ฒˆ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์žฌ์ „์†ก ๋ฐ›๊ธฐ๋•Œ๋ฌธ์— ๋ถˆ..