๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€199

[0x01] ๊ธฐ์ดˆ ์ฝ”๋“œ ์ž‘์„ฑ ์š”๋ น 1 ๊ณต๊ฐ„๋ณต์žก๋„ 512 MB = 1.2์–ต๊ฐœ int ( 1 int = 4B) ⇒ ์ด๋ ‡๊ฒŒ ํ’€์ด๋˜๋ฉด ํ‹€๋ฆฐ ๊ฒƒ! ์ •์ˆ˜ ์ž๋ฃŒํ˜• char (1 byte) : 2^7 - 1(127) short (2 byte) : 2^15 - 1(32767) int (4 byte) : 2^31 - 1 = 2.1 * 10^9 (21์–ต) long long (8 byte) : 2^63 - 1 = 9.2 * 10^18 ์‹ค์ˆ˜ ์ž๋ฃŒํ˜• 2์˜ ์Œ์ˆ˜ ์Šน์„ ์ด์šฉํ•ด ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ float (4byte) double (8byte) ์‹ค์ˆ˜์˜ ์ €์žฅ/์—ฐ์‚ฐ ๊ณผ์ •์—์„œ ๋ฐ˜๋“œ์‹œ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋ฐ–์— ์—†๋‹คfraction field์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์œ ํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ์†Œ์ˆ˜๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๊ณ  ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ ๋ฐ˜์˜ฌ๋ฆผํ•ด์•ผ ํ•จ float : ์œ ํšจ์ˆซ์ž 6์ž๋ฆฌ double .. 2023. 6. 20.
6. RESTful API ์„ค๊ณ„ ๊ฐ€์ด๋“œ Richardson Maturity Model A way to grade your API according to the constraints of REST Level 0 expose soap web services in rest style https://server/getPosts Level 1 expose resources with proper url note : improper use of http methods → ๋ชจ๋“  ์š”์ฒญ์„ GET, POST๋กœ ๋ฐ›๊ฑฐ๋‚˜ ์—๋Ÿฌ/200์œผ๋กœ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜•ํƒœ https://server/accounts/10 Level 2 level1 + HTTP methods(GET, POST, PUT, DELETE ๊ตฌ๋ถ„) Level 3 level2 + HATEOAS DATA + NEXT .. 2023. 6. 20.
5. Java Persistence API ์‚ฌ์šฉ JPA ๊ฐœ์š” JPA Java Persistence API ์ž๋ฐ” ORM ๊ธฐ์ˆ ์— ๋Œ€ํ•œ API ํ‘œ์ค€ ๋ช…์„ธ(Object Relationship Mapping) ์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค → ๋ฉ”์†Œ๋“œ ์„ ์–ธ๋ฌธ๋งŒ ์กด์žฌ. ์šฐ๋ฆฌ๋Š” ๊ตฌํ˜„์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐœ๋ฐœ์„ ํ•ด์•ผ ํ•œ๋‹ค ⇒ Hibernate EntityManager๋ฅผ ํ†ตํ•ด CRUD ์ฒ˜๋ฆฌ Hibernate JPA์˜ ๊ตฌํ˜„์ฒด, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ⇒ JPA์˜ EntityManager๋ฅผ ๊ตฌํ˜„ ๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘ ํ”„๋ ˆ์ž„์›Œํฌ ์ƒ์‚ฐ์„ฑ, ์œ ์ง€๋ณด์ˆ˜, ๋น„์ข…์†์„ฑ Spring Data JPA Spring Module JPA๋ฅผ ์ถ”์ƒํ™”ํ•œ Repository ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ ๋งŒ์œผ๋กœ๋„ Spring์—์„œ ์ œ๊ณตํ•˜๋Š” CRUD ๊ธฐ๋Šฅ ์‚ฌ์šฉ.. 2023. 6. 20.
4. Spring Boot API ์‚ฌ์šฉ REST API Level 3๋ฅผ ์œ„ํ•œ HATEOAS ์„ค์ • HATEOAS Hypermedia As the Engine Of Application State ํ˜„์žฌ ๋ฆฌ์†Œ์Šค์™€ ์—ฐ๊ด€๋œ(ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ) ์ž์› ์ƒํƒœ ์ •๋ณด๋ฅผ ์ œ๊ณต REST API ์„ค๊ณ„ ๋‹จ๊ณ„ The Swamp of POX : ํŠน์ •ํ•œ ์›น ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด์„œ ์ปดํ“จํ„ฐ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž์›์„ ์˜๋ฏธ ์—†์ด ์ „๋‹ฌ Resources HTTP Verbs : http ์ƒํƒœ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉ Hypermedia controls : ๋ฆฌ์†Œ์Šค์˜ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์™€ ํ•จ๊ป˜ ์ „๋‹ฌ org.springframework.boot spring-boot-starter-hateoas IntelliJ์—์„œ ๊ฒ€์ƒ‰ shift key 2๋ฒˆ ๋ˆ„๋ฅด๊ธฐ → pom.xml ์„ ํƒ ๋ฒ„์ „๋ณ„ HATEOAS.. 2023. 6. 20.
3. RESTful Service ๊ธฐ๋Šฅ ํ™•์žฅ Validation API @Valid annotation ์‚ฌ์šฉ **pom.xml์— dependency ์ถ”๊ฐ€** org.hibernate.validator hibernate-validator 6.0.7.Final dto์— ์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€ @Data @AllArgsConstructor public class User { private Integer id; @Size(min=2, message = "Name์€ 2๊ธ€์ž ์ด์ƒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.") private String name; private String password; @Past // ๊ณผ๊ฑฐ ๋‚ ์งœ๋งŒ ๊ฐ€๋Šฅํ•œ ์ œ์•ฝ ์กฐ๊ฑด private Date joinDate; } controller์— ์ถ”๊ฐ€ JDK์— ํฌํ•จ๋œ API์™€ hibernate library์— ํฌํ•จ๋œ vali.. 2023. 6. 20.
2. User Service API ๊ตฌํ˜„ User ๋„๋ฉ”์ธ ํด๋ž˜์Šค ์ƒ์„ฑ ๋„๋ฉ”์ธ ํŠน์ • ์ „๋ฌธ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ „๋ฌธ ์ง€์‹ ์Šคํ…Œ๋ ˆ์˜คํƒ€์ž… ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์–ด๋Š ์šฉ๋„๋กœ ์‚ฌ์šฉ๋  ๊ฒƒ์ธ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ → ์˜์กด์„ฑ ์ฃผ์ž…์— ๋„์›€๋œ๋‹ค. ex) @RestController, @Service POST @RequestBody ๋ฅผ ์„ ์–ธํ•ด ํ˜„์žฌ variable์ด requestbody ํ˜•์‹์œผ๋กœ ๋“ค์–ด์˜จ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆผ HTTP Status Code 2XX → OK 4XX → Client 5XX → Server @ServletUriComponentsBuilder๋ฅผ ์ด์šฉํ•ด ํ˜ธ์ถœ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ ์ ˆํ•œ status code๋ฅผ ๋ฐ˜ํ™˜ํ•จ @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user){ User save.. 2023. 6. 20.
1. Spring Boot๋กœ ๊ฐœ๋ฐœํ•˜๋Š” RESTful Service ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ dependency ⇒ pom.xml JPA Spring web → embedded tomcat ์‹คํ–‰ ๊ฐ€๋Šฅ REST API ์„ค๊ณ„ User → Posts ๊ตฌ์กฐ ํ™•์ธ application.properties → yml ํŒŒ์ผ๋กœ! ์Šคํ”„๋ง ๋ถ€ํŠธ ํ™˜๊ฒฝ์„ค์ • ์ง€์ • pom.xml ์ „์ฒด ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ maven ์„ค์ • Controller RESTController ํด๋ž˜์Šค๋กœ ์ž‘๋™ํ•จ(์ผ๋ฐ˜ MVC Controller์™€๋Š” ๋‹ค๋ฆ„) @RestController Mapping // GET @RequestMapping(method=RequestMethod.GET, path="/hello-world") @GetMapping(path = "/hello-world")/ Bean ์Šคํ”„๋ง์—์„œ ์„ ์–ธ๋˜์–ด ๊ด€๋ฆฌ๋˜๋Š” ์ธ์Šคํ„ด์Šค ⇒ ์˜์กด์„ฑ.. 2023. 6. 20.
0. Web Service & Web Application ์›น ์„œ๋น„์Šค ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ปดํ“จํ„ฐ๋“ค ๊ฐ„์— ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ SOAP VS REST 1) SOAP(Simple object access protocol) XML ๊ธฐ๋ฐ˜ envelope - header - body ⇒ overhead ์‹ฌํ•จ 2) REST(REpresentational State Transfer) Resource์˜ representation์— ์˜ํ•œ (์ž์›์˜) ์ƒํƒœ ์ „๋‹ฌ HTTP Method๋ฅผ ํ†ตํ•ด Resource๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ณ RESTful : REST API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋น„์Šค REST HTTP HTTP Methods : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๋Š” ๋ชฉ์ ์ด๋‚˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ˆ˜๋‹จ HTTP Status Codes : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์ •๋ณด.. 2023. 6. 20.
[ALGO] BFS dist ๋ฐฐ์—ด ํ™œ์šฉ ๋ฌธ์ œ ๋ฌธ์ œ ์ž๊พธ ๊ฑฐ๋ฆฌ ๊ด€๋ จ bfs ๋‚˜์˜ฌ ๋•Œ๋งˆ๋‹ค ์ฒ˜๋ฆฌ๋ฅผ ์ด์ƒํ•˜๊ฒŒ ํ•จ ์˜ค๋Š˜์˜ ์‚ฝ์งˆ ๋น„๊ต๋ฌธ์—์„œ๋ถ€ํ„ฐ dist ๊ฐ’์„ ๋”ฐ์ง€๊ณ  ์•‰์•„์žˆ์Œ if (dist[nx][ny] >= dist[x][y] + 1) continue; ํ•ด๊ฒฐ ๊ทธ๋ƒฅ 0 ์ด์ƒ์ธ์ง€๋งŒ ์ฒดํฌํ•ด์ค€๋‹ค (๋ฌผ๋ก ! ์ž…๋ ฅ์—์„œ dist ์ฒ˜๋ฆฌ๋ฅผ ๋ฉ€์ฉกํ•˜๊ฒŒ ํ•ด์•ผ๊ฒ ์ฃ ???) if (dist[nx][ny] >= 0) continue; ๊ด€๋ จ ๋ฌธ์ œ https://www.acmicpc.net/problem/4179 4179๋ฒˆ: ๋ถˆ! ์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋‘ ์ •์ˆ˜ R๊ณผ C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹จ, 1 ≤ R, C ≤ 1000 ์ด๋‹ค. R์€ ๋ฏธ๋กœ ํ–‰์˜ ๊ฐœ์ˆ˜, C๋Š” ์—ด์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ๋‹ค์Œ ์ž…๋ ฅ์œผ๋กœ R์ค„๋™์•ˆ ๊ฐ๊ฐ์˜ ๋ฏธ๋กœ ํ–‰์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ๋ฌธ์ž www.acmicpc.net https://ww.. 2023. 6. 20.