[JavaScript/node.js] ๋ฐฑ์ค€ 20437๋ฒˆ - ๋ฌธ์ž์—ด ๊ฒŒ์ž„ 2

[๋ฌธ์ œ] https://www.acmicpc.net/problem/20437 20437๋ฒˆ: ๋ฌธ์ž์—ด ๊ฒŒ์ž„ 2 ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์—์„œ 3๋ฒˆ์—์„œ ๊ตฌํ•œ ๋ฌธ์ž์—ด์€ aqua, 4๋ฒˆ์—์„œ ๊ตฌํ•œ ๋ฌธ์ž์—ด์€ raquator์ด๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์—์„œ๋Š” ์–ด๋–ค ๋ฌธ์ž๊ฐ€ 5๊ฐœ ํฌํ•จ๋œ ๋ฌธ์ž์—ด์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ -1์„ ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net [ํ’€์ด] ์–ด๋–ค ๋ฌธ์ž๋ฅผ a๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ •ํ™•ํžˆ K๊ฐœ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ์ฒซ ๋ฒˆ์งธ์™€ ๋งˆ์ง€๋ง‰ ๊ธ€์ž๊ฐ€ ๋ชจ๋‘ a์ธ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ for๋ฌธ์œผ๋กœ ๋ฌธ์ž์—ดW์„ ์ˆœํšŒํ•˜๋ฉฐ K๊ฐœ ์ด์ƒ ํฌํ•จ๋œ ๋ฌธ์ž๋ฅผ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. 1. Map์„ ํ™œ์šฉํ•˜์—ฌ key = ๋ฌธ์ž , value = [๋ฌธ์ž์˜ ๊ฐœ์ˆ˜, index1, index2, ... ] ์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. 2. ์™„์„ฑ๋œ Map์„ ์ˆœํšŒํ•˜๋ฉฐ val..

Algorithm/Baekjoon 2022. 8. 23. 15:11
[JavaScript] Babel๊ณผ Webpack์„ ์ด์šฉํ•œ ES6+/ES.NEXT ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•

ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ, ํŒŒ์ด์–ดํญ์Šค, ์—ฃ์ง€ ๊ฐ™์€ ์—๋ฒ„๊ทธ๋ฆฐ ๋ธŒ๋ผ์šฐ์ €์˜ ES6 ์ง€์›์œจ์€ ์•ฝ 98%๋กœ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ ES6 ์‚ฌ์–‘์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IE 11์˜ ES6 ์ง€์›์œจ์€ ์•ฝ 11%์ด๊ณ . ES6 ์ด์ƒ์˜ ๋ฒ„์ „(ES6+)๊ณผ ์ œ์•ˆ ๋‹จ๊ณ„์— ์žˆ๋Š” ES ์ œ์•ˆ ์‚ฌ์–‘(ES.NEXT)์€ ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ์ง€์›์œจ์ด ๋‹ค๋ฅธ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ES6+์™€ ES.NEXT์˜ ์ตœ์‹  ESCMAScript ์‚ฌ์–‘์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ์ตœ์‹  ์‚ฌ์–‘์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ IE๋ฅผ ํฌํ•จํ•œ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฌธ์ œ ์—†์ด ๋™์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ES6 ๋ชจ๋“ˆ(ESM)์™ธ์˜ ๋ณ„๋„์˜ ๋ชจ๋“ˆ ๋กœ๋”๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. IE๋ฅผ ํฌํ•จํ•œ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €๋Š” ESM์„ ์ง€์›X ESM์„ ์‚ฌ์šฉ..

[JavaScript] ๋ชจ๋“ˆ

๋ชจ๋“ˆ์˜ ์ผ๋ฐ˜์  ์˜๋ฏธ ๋ชจ๋“ˆ(module)์ด๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋ณ„์  ์š”์†Œ๋กœ์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“ˆ์€ ๊ธฐ๋Šฅ์„ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์ผ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ ๋ชจ๋“ˆ์ด ์„ฑ๋ฆฝํ•˜๋ ค๋ฉด ๋ชจ๋“ˆ์€ ์ž์‹ ๋งŒ์˜ ํŒŒ์ผ ์Šค์ฝ”ํ”„(๋ชจ๋“ˆ ์Šค์ฝ”ํ”„)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ ๋ชจ๋“ˆ์˜ ์ž์‚ฐ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์บก์Šํ™”๋˜์–ด ๋น„๊ณต๊ฐœ ์ƒํƒœ๋กœ ๊ฐœ๋ณ„์  ์กด์žฌ๋กœ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ถ„๋ฆฌ๋˜์–ด ์กด์žฌ ๊ณต๊ฐœ๊ฐ€ ํ•„์š”ํ•œ ์ž์‚ฐ์— ํ•œ์ •ํ•˜์—ฌ export๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒ์  ๊ณต๊ฐœ๊ฐ€ ๊ฐ€๋Šฅ ๋ชจ๋“ˆ ์‚ฌ์šฉ์ž๋Š” ๋ชจ๋“ˆ์ด ๊ณต๊ฐœํ•œ ์ž์‚ฐ ์ค‘ ์ผ๋ถ€ ๋˜๋Š” ์ „์ฒด๋ฅผ ์„ ํƒํ•ด import๋กœ ์ž์‹ ์˜ ์Šค์ฝ”ํ”„ ๋‚ด๋กœ ๋ถˆ๋Ÿฌ๋“ค์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ด์ฒ˜๋Ÿผ ๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ถ„๋ฆฌ๋˜์–ด ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ถ„๋ฆฌ๋œ ๊ฐœ๋ณ„์  ํŒŒ์ผ๋กœ ์กด์žฌํ•˜๋‹ค๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ์˜ํ•ด ์žฌ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“ˆ์€ ์ฝ”๋“œ์˜ ๋‹จ์œ„๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜..

[JavaScript] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ

[๋ฌธ์ œ] https://school.programmers.co.kr/learn/courses/30/lessons/92341 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๋ฌธ์ œ ์„ค๋ช… ์ฃผ์ฐจ์žฅ์˜ ์š”๊ธˆํ‘œ์™€ ์ฐจ๋Ÿ‰์ด ๋“ค์–ด์˜ค๊ณ (์ž…์ฐจ) ๋‚˜๊ฐ„(์ถœ์ฐจ) ๊ธฐ๋ก์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฐจ๋Ÿ‰๋ณ„๋กœ ์ฃผ์ฐจ ์š”๊ธˆ์„ ๊ณ„์‚ฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ํ•˜๋‚˜์˜ ์˜ˆ์‹œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์š”๊ธˆํ‘œ ๊ธฐ๋ณธ ์‹œ๊ฐ„(๋ถ„) ๊ธฐ๋ณธ ์š”๊ธˆ(์›) ๋‹จ์œ„ ์‹œ๊ฐ„(๋ถ„) ๋‹จ์œ„ ์š”๊ธˆ(์›) 180 5000 10 600 ์ž…/์ถœ์ฐจ ๊ธฐ๋ก ์‹œ๊ฐ(์‹œ:๋ถ„) ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ ๋‚ด์—ญ 05:34 5961 ์ž…์ฐจ 06:00 0000 ์ž…์ฐจ 06:34 0000 ์ถœ์ฐจ 07:59..

Algorithm/Programmers 2022. 8. 18. 17:02
[JavaScript] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ async/await

์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ž€? ES6์—์„œ ๋„์ž…๋œ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ(generator)๋Š” ์ฝ”๋“œ ๋ธ”๋ก์˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€ํ–ˆ๋‹ค๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ ์ผ๋ฐ˜ ํ•จ์ˆ˜์˜ ์ฐจ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์—๊ฒŒ ํ•จ์ˆ˜ ์‹คํ–‰์˜ ์ œ์–ด๊ถŒ์„ ์–‘๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ดํ›„ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๋‹ฌ๋ฆฌ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž๊ฐ€ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€์‹œํ‚ค๊ฑฐ๋‚˜ ์žฌ๊ฐœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์™€ ํ•จ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋™์•ˆ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ํ•จ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๋‹ฌ๋ฆฌ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์™€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ํ•จ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ..

[JavaScript] ํ”„๋กœ๋ฏธ์Šค(Promise)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ•˜๋‚˜์˜ ํŒจํ„ด์œผ๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ „ํ†ต์ ์ธ ์ฝœ๋ฐฑ ํŒจํ„ด์€ ์ฝœ๋ฐฑ ์ง€์˜ฅ(Callback Hell)๋กœ ์ธํ•ด ๊ฐ€๋…์„ฑ์ด ๋‚˜์˜๊ณ  ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ค‘ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ณค๋ž€ํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ๋„ ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ES6์—์„œ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ํŒจํ„ด์œผ๋กœ ํ”„๋กœ๋ฏธ์Šค(Promise)๋ฅผ ๋„์ž…ํ–ˆ์œผ๋ฉฐ ์ด๋Š” ์ „ํ†ต์ ์ธ ์ฝœ๋ฐฑ ํŒจํ„ด์ด ๊ฐ€์ง„ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋ฉฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฝœ๋ฐฑ ํŒจํ„ด์˜ ๋‹จ์  ์ฝœ๋ฐฑ ์ง€์˜ฅ(Callbak Hell) ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค ํ•ด๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์™ธ๋ถ€์— ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†..

[JavaScript] REST API

REST API(REpresentational State Transfer)๋ž€? REST๋Š” HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ๊ทœ์ •ํ•œ ์•„ํ‚คํ…์ฒ˜๊ณ , REST API๋Š” REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. *๋กœ์ด ํ•„๋”ฉ์ด ์ž์‹ ์˜ 2000๋…„ ๋…ผ๋ฌธ์—์„œ ๋ฐœํ‘œ ๋‹น์‹œ ์›น HTTP๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์„ ๋ณด๊ณ  ์†Œ๊ฐœํ•จ HTTP์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜ HTTP ํ”„๋กœํ† ์ฝœ์„ ์˜๋„์— ๋งž๊ฒŒ ๋””์ž์ธํ•˜๋„๋ก ์œ ๋„ํ•จ REST์˜ ๊ธฐ๋ณธ ์›์น™์„ ์„ฑ์‹คํžˆ ์ง€ํ‚จ ์„œ๋น„์Šค ๋””์ž์ธ์„ "RESTful"์ด๋ผ๊ณ  ํ‘œํ˜„ *๋กœ์ด ํ•„๋”ฉ : ์•„ํŒŒ์น˜ HTTP ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ์˜ ๊ณต๋™ ์„ค๋ฆฝ์ž๋กœ HTTP/1.0๊ณผ 1.1์˜ ์ŠคํŽ™ ์ž‘์„ฑ์— ์ฐธ์—ฌํ•จ REST API์˜ ๊ตฌ์„ฑ REST API๋Š” ์ž์›(reso..