์ „์ฒด ๊ธ€

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”„๋กœ์„ธ์Šค (์šฐ์„ ์ˆœ์œ„ํ)

๋ฌธ์ œ : https://school.programmers.co.kr/learn/courses/30/lessons/42587 ํ’€์ด๊ณผ์ • 1. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘‰์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ํ™œ์šฉ O(logn)ํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. ๋ฌธ์ œ์˜ 2๋ฒˆ ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 2๋ฒˆ ์กฐ๊ฑด์˜ ๋™์ž‘์—์„œ ๋‹ค์‹œ ํ์— ๋„ฃ๋Š” ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด (2,1)์€ ๋’ค๋กœ ๊ฐ€์•ผํ•˜๋Š”๋ฐ ์ด๋•Œ ๋’ค๋กœ ๊ฐ€๋Š” (2,1)์˜ ์ˆœ์„œ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ํ•„์š” ์—†์ด ์ฃผ์–ด์ง„ priorities ๋ฐฐ์—ด๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฌดํ•œ์ˆœํšŒ(?)ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 3. ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์ •๋‹ต์ธ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด๋“ค์„ ๋ฌดํ•œ์ˆœํšŒ(2๋ฒˆ ํ’€์ด๊ณผ์ •) ํ•˜๋ฉฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜์ƒ

๋ฌธ์ œ์ถœ์ฒ˜ : https://school.programmers.co.kr/learn/courses/30/lessons/42578 ํ’€์ด๊ณผ์ • ์ฒ˜์Œ์˜ ์ ‘๊ทผ : ์˜ท ์ข…๋ฅ˜ ๋ณ„ ๊ฐฏ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๋ฐฐ์—ด์„ ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•˜๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋งŒ์กฑํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ ‘๊ทผ์— ๋Œ€ํ•œ ์ƒ๊ฐ : ์ง„ ๋ถ€๋ถ„์ง‘ํ•ฉ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง„ ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ๊ฐฏ์ˆ˜๋Š” 2^n - 1 ์ด๋ฏ€๋กœ, ์ด ๋ฌธ์ œ์—์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ n = 30์ด ๋˜๋ฏ€๋กœ ์ฒ˜์Œ์˜ ์ ‘๊ทผ๊ณผ ๊ฐ™์ด ์™„์ „ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋ฉด ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ํ’€์ด 1. ์˜ท ์ข…๋ฅ˜๋ณ„๋กœ ์˜ท์˜ ๊ฐฏ์ˆ˜๋ฅผ + 1 ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ +1์€ (์ž…์ง€์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค) 2. +1๋œ ์˜ท ์ข…๋ฅ˜๋ณ„ ์˜ท์˜ ๊ฐฏ์ˆ˜๋“ค ๋ผ๋ฆฌ์˜..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ์˜ ๊ฐœ์ˆ˜

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://school.programmers.co.kr/learn/challenges ํ’€์ด๊ณผ์ • ์šฐ์„  ๋ฐฉ์ด ์ƒ์„ฑ๋˜๋Š” ์กฐ๊ฑด์— ๋Œ€ํ•ด ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ์ด ์ƒ์„ฑ๋˜๋Š” ์กฐ๊ฑด์€ 1. ์ด์ „์— ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ •์ ์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•จ 2. ์ด์ „์— ์—ฐ๊ฒฐํ•œ ์„ ๋ถ„์ด ์•„๋‹Œ ์ƒˆ๋กœ ์ƒ๊ธด ์„ ๋ถ„์ด์–ด์•ผ ํ•จ ๊ฐ ์ •์ ์— ๋Œ€ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณผ์ •์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ๊ธฐ์กด์˜ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์™€ ๋‹ค๋ฅด๊ฒŒ ์ธ์ ‘ํ–‰๋ ฌ์ด๋‚˜ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋กœ๋Š” ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. arrows์˜ ํฌ๊ธฐ๊ฐ€ 1 ์ด์ƒ 100,000์ดํ•˜๋ผ๋Š” ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ์ธ์ ‘ ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ200_001 * 200_001 ์˜ ํฌ๊ธฐ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด HashMap ์ž๋ฃŒ๊ตฌ์กฐ์™€ Node ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

์ด๋ถ„ํƒ์ƒ‰

์ด๋ถ„ํƒ์ƒ‰์€ ํฌ๊ฒŒ ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜, lower bound์™€ upper bound๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒฝ์šฐ = ์ค‘๋ณต์›์†Œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œlower bound์™€ upper bound = ์ค‘๋ณต์›์†Œ๋ฅผ ๊ณ ๋ ค์กด์žฌ์—ฌ๋ถ€ ํŒŒ์•… (์ค‘๋ณต์›์†Œ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ)public static int binarySearch(int[] arr, int key) { int lo = 0; // ํƒ์ƒ‰ ๋ฒ”์œ„์˜ ์™ผ์ชฝ ๋ ์ธ๋ฑ์Šค int hi = arr.length - 1; // ํƒ์ƒ‰ ๋ฒ”์œ„์˜ ์˜ค๋ฅธ์ชฝ ๋ ์ธ๋ฑ์Šค while(lo arr[mid]) { lo = mid + 1; } }} ์ค‘๋ณต์›์†Œ ๊ณ ๋ คlower boundprivate static int lowerBound(int[] arr, in..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

visited๋ฐฐ์—ด์ด 3์ฐจ์›์ธ bfs ์ตœ๋‹จ๊ฒฝ๋กœ ํƒ์ƒ‰ ๋ฌธ์ œ (๋ฐฑ์ค€ 1600๋ฒˆ)

https://www.acmicpc.net/problem/1600 1600๋ฒˆ: ๋ง์ด ๋˜๊ณ ํ”ˆ ์›์ˆญ์ด ์ฒซ์งธ ์ค„์— ์ •์ˆ˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ๊ฒฉ์žํŒ์˜ ๊ฐ€๋กœ๊ธธ์ด W, ์„ธ๋กœ๊ธธ์ด H๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ H์ค„์— ๊ฑธ์ณ W๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, 0์€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ํ‰์ง€, 1์€ ์žฅ์• ๋ฌผ์„ ๋œปํ•œ๋‹ค. ์žฅ์• ๋ฌผ์ด ์žˆ www.acmicpc.net ํ’€์ด๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ๋ง ์ด๋™ ํšŸ์ˆ˜์— ๋”ฐ๋ฅธ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ visited[][] ์™€ ๊ฐ™์ด 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ง„ํ–‰ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ๋˜๋ฉด ๋ง๋กœ ์ด๋™ํ•œ ์ง€์ ์— visited๊ฐ€ true๋กœ ๋˜์–ด ๊ทธ๋ƒฅ ์ด๋™์ด ๋” ์ด์ƒ ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด (0,0)์—์„œ bfs๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด (0,1) (1,0) (1,2)๊ฐ€ ๋ฐฉ๋ฌธ์ฒดํฌ ๋˜๊ณ  ํ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ..

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

์›น์†Œ์ผ“

websocket์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์›น์†Œ์ผ“ ํ†ต์‹ ์˜ ์‹œ์ž‘ ์›น์†Œ์ผ“ ํ†ต์‹ ์€ ์‹œ์ž‘์€ HTTP request ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ HTTP request ํ—ค๋”์—๋Š” Connection : "Upgrade", Upgrade : "websocket"์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. GET /spring-websocket-portfolio/portfolio HTTP/1.1 Host: localhost:8080 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: Uc9l9TMkWGbHFD2qnFHltg== Sec-WebSocket-Protocol: v10.stomp, v11.stomp Sec-WebSocket-Version: 13 Origin: http://localhos..

๐Ÿฅ‡์ฝ”๋”ฉํ…Œ์ŠคํŠธ:Algorithm

์ด๋ถ„ ๊ทธ๋ž˜ํ”„ (๋ฐฑ์ค€ 1707)

https://www.acmicpc.net/problem/1707 1707๋ฒˆ: ์ด๋ถ„ ๊ทธ๋ž˜ํ”„ ์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ •์ ์˜ ๊ฐœ์ˆ˜ V์™€ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ E๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— www.acmicpc.net ์ด๋ถ„๊ทธ๋ž˜ํ”„ ์ธ์ ‘ํ•œ ์ •์ ๋ผ๋ฆฌ ์„œ๋กœ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ์น ํ•ด์„œ ๋ชจ๋“  ์ •์ ์„ ๋‘ ๊ฐ€์ง€ ์ƒ‰์œผ๋กœ๋งŒ ์น ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„. ํ’€์ด๋ฅผ ์œ„ํ•œ ์•„์ด๋””์–ด : ์ด๋ถ„๊ทธ๋ž˜ํ”„์˜ ํ•˜๋‚˜์˜ ๊ฐ„์„ ์— ์—ฐ๊ฒฐ๋œ ๋‘ ๋…ธ๋“œ์˜ ์ƒ‰์ƒ์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด bfs๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์™€ ์„œ๋กœ ์ƒ‰์ƒ์ด ๋‹ค๋ฅธ์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ๋ณ€์ˆ˜ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ์™€ ์ƒ‰์ƒํ™•์ธ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” int[] chk ๋ฐฐ์—ด์„ ๋’€๋‹ค. -1 : ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ ..

๐Ÿ’Ž๋ฐฑ์—”๋“œ : Backend

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ๋™์ž‘๊ณผ์ • ํ•„ํ„ฐ๋ž€? ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์— ์กด์žฌํ•˜์—ฌ ์Šคํ”„๋ง๊ณผ ๋ฌด๊ด€ํ•œ ์ž์›์— ๋Œ€ํ•ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต web.xml์— ๋“ฑ๋ก. ์ธ์ฝ”๋”ฉ ๋ณ€ํ™˜ ์ฒ˜๋ฆฌ, XSS ๋ฐฉ์–ด ๋“ฑ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ€์˜ ์ฐจ์ด์  ์ธ์ฆ : ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ๋ณธ์ธ์ด ๋งž๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ ์ธ๊ฐ€ : ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ๋œ ์ž์›์— ๋Œ€ํ•ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ ˆ์น˜ Servlet Container์™€ Spring Container DelegatingFilterProxy Servlet Container์™€ Spring์˜ Spring Container๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. servlet container์— ์กด์žฌํ•˜๋Š” ํ•„ํ„ฐ์ž…๋‹ˆ๋‹ค. ํ•„ํ„ฐ(Filter)๋„ ์Šคํ”„๋ง์—์„œ ๊ด€๋ฆฌ๊ฐ€..

mc.thd
mincheolsong