์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์นดํ๋๊ฐ
- ์ฑ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ๋ฐฐ์์ ๋ฐฐ์
- ๊ฐ๋ฐ
- Python
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ๋ ์
- ํ๋ก๊ทธ๋๋ฐ
- ์ํ์ฃผ
- ๋ฐ์ํ
- ์ ๋ฆฌํธ๋ฆฌํธ
- ํ์ฒ์ ๋ฆฌํธ๋ฆฌํธ
- ์๋ฐ
- ๊ฐ์ดํ ์ข ๋ญ๊ฐ๋น
- ์ํ
- ๋๊ฐ
- ์ค๋ผํด
- ์ฝ๋ฉ
- JavaScript
- ํ์ด์ฌ
- database
- ์ค๋ธ์
- ์นํผ๋ธ๋ฆฌ์ฑ
- ์๋ฐ์คํฌ๋ฆฝํธ
- css
- html
- Java
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- Today
- Total
๋ชฉ๋กStudy (87)
JiYoung Dev ๐ฅ
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xvz1K/btsKzaRpc8y/WtumDGEKrXk3kgMa2yMZ90/img.png)
๐ ๋ฌธ์ https://www.acmicpc.net/problem/17298๋ฌธ์ ์ค๋ช ํฌ๊ธฐ๊ฐ N์ธ ์์ด A = A1, A2, ..., AN์ด ์๋ค. ์์ด์ ๊ฐ ์์ Ai์ ๋ํด์ ์คํฐ์ NGE(i)๋ฅผ ๊ตฌํ๋ ค๊ณ ํ๋ค. Ai์ ์คํฐ์๋ ์ค๋ฅธ์ชฝ์ ์์ผ๋ฉด์ Ai๋ณด๋ค ํฐ ์ ์ค์์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฌํ ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์คํฐ์๋ -1์ด๋ค.์๋ฅผ ๋ค์ด, A = [3, 5, 2, 7]์ธ ๊ฒฝ์ฐ NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1์ด๋ค. A = [9, 5, 4, 8]์ธ ๊ฒฝ์ฐ์๋ NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1์ด๋ค.์ ๋ ฅ์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/zZKDN/btsKzdHjElc/fTefCFAeoO52Kqf3GVXRbk/img.png)
๐ ๋ฌธ์ ์ํฉ์ ์ํ ์ฐธ์ฌ๋ฅผ ์ํด ์ฌ๋ด ์๋ฒ(Private๋ง)์ ๊ตฌ์ถ๋์ด ์๋ ์๋ฃจ์ ์ ์ธ๋ถ๋ง์์๋ ์ ๊ทผํ ์ ์๋๋ก ๋คํธ์ํฌ ์ค์ ์ ๋ณ๊ฒฝํ๋ ์ผ์ด ์์๋ค. ๋ผ์ฐํ ์ ํ๋์ง ์๋ ํฌํธํฌ์๋ฉ์ ํ๋์ง๋ ํ์คํ์ง ์์ง๋ง(์๋ง๋ ํฌํธํฌ์๋ฉ?) ์ด์จ๋ ๊ฒฐ๋ก ์ ์ฌ๋ด๋ง IP๋ก ์ ์ํ ์ ์๋ ๊ฒ์ ์ธ๋ถ๋ง์์๋ ์ ์์ด ๊ฐ๋ฅํ๋๋ก ๋ณ๊ฒฝํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ์ธ๋ถ๋ง์์ ์ ์ํ ์ ์๋๋ก ๋ณ๊ฒฝํ๋ฉด์ ๋ฆฌ์กํธ ์ฑ์ด ์ฐ๊ณ๋ API ์๋ฒ์ ์ฐ๋์ด ์๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ํ์ฌ ์ฐ๋ฆฌ ์๋ฃจ์ ์ ์ํคํ ์ฒ๋ ์ฝ๊ฐ ๋ ํนํ๊ฒ ๊ตฌ์ฑ๋์ด ์๋๋ฐ CSR์ธ ๋ฆฌ์กํธ๋ฅผ Node.js ์๋ฒ ์์ ์ฌ๋ฆฌ๊ณ , ๋ฆฌ์กํธ์์ Node.js, Spring Server ๋ฐ python Server์ ํต์ ํ๋ ๊ตฌ์กฐ์ด๋ค. ๋ฆฌ์กํธ ์ฑ์์ ๊ฐ ์๋ฒ๋ก ์ ์กํ๋ API..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kMfPR/btsKyjmJyIa/Uk5teKds26xpZvJtFVZLP0/img.png)
๐ ๋ฌธ์ ๋ฌธ์ ์ค๋ช ์คํ (stack)์ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก, ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ์์ฃผ ์ด์ฉ๋๋ ๊ฐ๋ ์ด๋ค. ์คํ์ ์๋ฃ๋ฅผ ๋ฃ๋ (push) ์ ๊ตฌ์ ์๋ฃ๋ฅผ ๋ฝ๋ (pop) ์ ๊ตฌ๊ฐ ๊ฐ์ ์ ์ผ ๋์ค์ ๋ค์ด๊ฐ ์๋ฃ๊ฐ ์ ์ผ ๋จผ์ ๋์ค๋ (LIFO, Last in First out) ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค.1๋ถํฐ n๊น์ง์ ์๋ฅผ ์คํ์ ๋ฃ์๋ค๊ฐ ๋ฝ์ ๋์ด๋์์ผ๋ก์จ, ํ๋์ ์์ด์ ๋ง๋ค ์ ์๋ค. ์ด๋, ์คํ์ pushํ๋ ์์๋ ๋ฐ๋์ ์ค๋ฆ์ฐจ์์ ์งํค๋๋ก ํ๋ค๊ณ ํ์. ์์์ ์์ด์ด ์ฃผ์ด์ก์ ๋ ์คํ์ ์ด์ฉํด ๊ทธ ์์ด์ ๋ง๋ค ์ ์๋์ง ์๋์ง, ์๋ค๋ฉด ์ด๋ค ์์๋ก push์ pop ์ฐ์ฐ์ ์ํํด์ผ ํ๋์ง๋ฅผ ์์๋ผ ์ ์๋ค. ์ด๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.์ ๋ ฅ์ฒซ ์ค์ n (1 ≤ n ≤ 100,000)..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cPZg5J/btsKyjUzPPV/iSGvhBjt4DQnvyICzeDyF1/img.png)
์ด์ํ๊ฒฝ์ ์ ์ฉ๋ ์๋ฃจ์ ์ค Rest API๋ฅผ ํตํด ๋ฑ๋ก๊ณผ ์กฐํ๋ฅผ ์งํํ๋ ๋ก์ง์์ ๋ฑ๋ก์ ์ ์์ ์ผ๋ก ์งํ๋์ง๋ง, ๋ฑ๋ก๋ ์ ๋ณด๋ก ์กฐํ ์ ์กฐํ๊ฐ ์๋๋ ํ์์ด ๋ฐ์ํ์๋ค. ํ์ธ ๊ฒฐ๊ณผ, ์ฐ๊ณ ์๋น์ค์์ ์ฐ๋ฆฌ ์๋ฃจ์ ์ RestAPI ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ URL์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ๋ด์์ ๋ณด๋ด๊ฒ ๋๋๋ฐ ์ด ๋ user์ id๋ฅผ Base64 ์ธ์ฝ๋ฉํ์ฌ ๋ณด๋ด๋ ๊ฒฐ๊ณผ, Base64 ์ธ์ฝ๋ฉ์ ํฌํจ๋๋ ๋ฌธ์์ด ์ค + ๋ฌธ์์ด์ด URL์์ ์ฌ์ฉํ ๊ฒฝ์ฐ Space๋ก ์ธ์๋๊ธฐ ๋๋ฌธ์ ์ ์์ ์ธ ์กฐํ๊ฐ ์งํ๋์ง ์์๋ค. ํด๋น ๋ฌธ์ ์ ๊ด๋ จํ์ฌ ์ด๋ฒ์๋ Base64์ ๊ด๋ จ๋ ํฌ์คํ ์ ์งํํด ๋ณด์๋ค. ๐ Base64 Encoding Base64 ์ธ์ฝ๋ฉ์ด๋ ์ด์ง(binary) ๋ฐ์ดํฐ๋ฅผ 6bit์ฉ ์๋ผ์ 64๊ฐ์ ๋ฌธ์(์์คํค์ฝ๋)๋ก ๋งค..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Cygx7/btsKw3DULL7/vEkfImyf84EsmLzYGspiL1/img.png)
์ค๋์ ๋ฆฌ์กํธ๋ฅผ ์ด์ฉํด ๋ก์ปฌ์ ์กด์ฌํ๋ ์ฒจ๋ถํ์ผ์ ์ ๋ก๋ํ์ฌ API๋ก ์ ์กํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณด์๋ค. ํ๊ทธ๋จผ์ , ๋ฆฌ์กํธ์์ ์ฒจ๋ถํ์ผ์ ์ ๋ก๋ ํ๊ธฐ ์ํด์๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ํด๋น ํ๊ทธ๋ HTML ๊ธฐ๋ณธ ํ๊ทธ๋ก ๋ก์ปฌ ์ปดํจํฐ์ ์กด์ฌํ๋ ํ์ผ์ ๊ฐ์ ธ ์ฌ ์ ์๋๋ก ๋์์ฃผ๋ ํ๊ทธ์ด๋ค. ๋ง์ฝ ์๋ฌด ์ค์ ์์ด ํด๋น ํ๊ทธ๋ง ์ฌ์ฉํ๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ณด์ฌ์ค๋ค. ํ์ผ ์ ํ์ด๋ผ๋ ๋ฒํผ๊ณผ ํ ์คํธ๊ฐ ๋จ๊ณ , 'ํ์ผ ์ ํ' ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ ์๊ณ ์๋ ํ์ผ์ ์ ๋ก๋ ํ๋ ์ฐฝ์ด ๋ฌ๋ค. ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ input ํ๊ทธ์ file ์์ฑ๋ง์ผ๋ก๋ ํ์ผ ์ ๋ก๋๋ฅผ ํ ์ ์์ง๋ง ์กฐ๊ธ ๋ ์ฌ์ฉ์๊ฐ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก drag & drop ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค. ์ ์ฌ์ฉํ drag & drop ๊ธฐ๋ฅ ์ถ๊ฐ๋ค์ด๊ฐ๊ธฐ์..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2dpSL/btsKohiZQPt/EaJTOgBdzgKdTuk0Kl1L6k/img.png)
๐ ๋ฌธ์ https://www.acmicpc.net/problem/11003๐ ํ์ด์ฝํ ์ค๋น๋ฅผ ์ํด Do it! ์๊ณ ๋ฆฌ์ฆ ์ฝ๋ฉํ ์คํธ ์ฑ ์ ๋ณด๋ฉด์ ๊ณต๋ถํ๋ฉฐ ๋ง๋ ๋ฌธ์ ๋ก, Deque๋ฅผ ํ์ฉํ์ฌ ์ต์๊ฐ์ ์ฐพ๋ ๋ฌธ์ ์์ ์ ์ ์์๋ค. ์ฝํ ์ด๋ณด์์ธ ๋๋ ์ฒ์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ด์ค for๋ฌธ์ ์ฌ์ฉํ์ฌ ํธ๋ ๋ฐฉ์์ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ ํด๋น ๋ฌธ์ ๋ฅผ ์ด์ค For์ผ๋ก ํ ๊ฒฝ์ฐ ์๊ฐ ์ ํ์ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง ๋ฐฉ์์ ์ฐพ์์ผํ๋ค. ์ด ๋ฌธ์ ์์ ์ฌ์ฉํ ์๋ฃ๊ตฌ์กฐ์ธ Deque๋ ๋ฌด์์ผ๊น?Deque(๋ฑ)์ด๋, ์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ก LinkedList, ArrayDeque ๋ฑ์ผ๋ก ๊ตฌํํ๋ค. addFirst(), removeFirst() ํจ์๋ฅผ ํตํด ๋งจ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ,..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/biFwYa/btsHcpKFTwk/EpStVhKUahvJz4qQ7Fk3Ck/img.png)
์ง๋๋ฒ์ ์ด์ด ์ด๋ฒ์๋ Authorization์ Method Security์ ์ถ๊ฐ ๋ด์ฉ์ ๋ํ ๋ด์ฉ์ ์ ๋ฆฌํ๋ค. 2024.05.05 - [Study/Java] - Spring Security ์ ์ฉ๊ธฐ (6) Spring Security Authorization(HttpServletRequests) Spring Security ์ ์ฉ๊ธฐ (6) Spring Security Authorization(HttpServletRequests)2024.05.05 - [Study/Java] - Spring Security ์ ์ฉ๊ธฐ (5) Spring Security Authentication ๋์์๋ฆฌ Spring Security ์ ์ฉ๊ธฐ (5) Spring Security Authentication ๋์์๋ฆฌjwt์ ๋ํด ๊ณต..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cdSGrI/btsHcSlsD9c/UkU71YtNkvqKk2YERPGJpK/img.png)
2024.05.05 - [Study/Java] - Spring Security ์ ์ฉ๊ธฐ (5) Spring Security Authentication ๋์์๋ฆฌ Spring Security ์ ์ฉ๊ธฐ (5) Spring Security Authentication ๋์์๋ฆฌjwt์ ๋ํด ๊ณต๋ถํ๊ณ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๋ ์ค spring security์ ๋ํ ์ดํด๊ฐ ์์ง ๋ถ์กฑํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ด๋ป๊ฒ spring security๋ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , ์ด๋ป๊ฒ ์๋ํ๋๊ฐ์danyoujeong.tistory.com ์ง๋ ์๊ฐ์ ์ด์ด ์ด๋ฒ์๋ Spring Security์ Authorization ์๋ ์๋ฆฌ์ HttpRequest์ ๋ํ ์ธ๊ฐ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์๋ค. ์ด๋ฒ ํฌ์คํ ์ญ์ ์คํ๋ง ๊ณต์๋ฌธ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/o6jcT/btsHb9ntYwg/oY6YoCkI7WeEl3qrLXMR1k/img.png)
jwt์ ๋ํด ๊ณต๋ถํ๊ณ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๋ ์ค spring security์ ๋ํ ์ดํด๊ฐ ์์ง ๋ถ์กฑํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ด๋ป๊ฒ spring security๋ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , ์ด๋ป๊ฒ ์๋ํ๋๊ฐ์ ๋ํ ๋ฌธ์ ์ ๋ถ๋ชํ๊ณ , ์ด๋ฒ ํฌ์คํ ์์๋ spring security ๊ณต์ ์ฌ์ดํธ๋ฅผ ํด์ํ์ฌ Authentication์ ์ํคํ ์ฒ์ ๋ํด ๊ณต๋ถํด๋ณด๊ณ ์ ํ๋ค. https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html Servlet Authentication Architecture :: Spring SecurityProviderManager is the most commonly use..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/nP6Gk/btsG3sAzSdG/vVHwHgW8efQfgiLdnbKlMK/img.png)
์ด์ ์๊ฐ์๋ Spring Security๋ ๋ฌด์์ด๋ฉฐ, ์ด๋ป๊ฒ ์ ์ฉ ๊ฐ๋ฅํ์ง์ ๋ํด ์์๋ณด์๋ค. 2024.04.22 - [Study/Java] - Spring Security ์ ์ฉ๊ธฐ (1) Spring Security๋?2024.04.25 - [Study/Java] - Spring Security ์ ์ฉ๊ธฐ (2) Spring Security Configurationํ์๋ ๋ณธ ํ๋ก์ ํธ์์ jwt๋ฅผ ํ์ฉํ ์ธ์ฆ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ ํ๋ค. jwt ์ค์ ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ jwt๋ ๋ฌด์์ธ์ง ๋จผ์ ์ดํด๋ณด๊ณ ์ ํ๋ค. JWT(JSON Web Token)์ด๋?JWT(JSON Web Token)์ ์ธ์ฆ์ ํ์ํ ์ ๋ณด๋ค์ ์ํธํ์ํจ JSON ํ ํฐ์ ์๋ฏธํ๋ค. JWT๋ HMAC ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋น๋ฐํค๋ก..