Learned

  • Spring Boot ์™ธ๋ถ€ API ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์ž! [MockWebServer vs WireMock]

    โ“ Mock ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  Spring Boot Github ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ [ RestTemplate ยท WebClient ยท FeignClient ๋ฅผ ๋น„๊ตํ•ด๋ณด์ž ] Github OAuth ์ธ์ฆ ํ๋ฆ„๊ณผ ์‚ฌ์ „ ์ค€๋น„ Github ์ธ์ฆ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. https://github.com/login/oauth/authorize?client_id={๋ฐœ๊ธ‰๋ฐ›์€ client_id} ๋กœ ์ด๋™ํ•˜๋Š” ๋งํฌ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•œ๋‹ค. 2. ์‚ฌ์šฉ์ž๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ™” yinq.tistory.com REST API ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” RestTemplate ยท WebClient ยท FeignClient ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์™ธ๋ถ€ API ์š”์ฒญ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ˆ, ..

  • Spring Boot Github ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ [ RestTemplate ยท WebClient ยท FeignClient ๋ฅผ ๋น„๊ตํ•ด๋ณด์ž ]

    Github OAuth ์ธ์ฆ ํ๋ฆ„๊ณผ ์‚ฌ์ „ ์ค€๋น„ Github ์ธ์ฆ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. https://github.com/login/oauth/authorize?client_id={๋ฐœ๊ธ‰๋ฐ›์€ client_id} ๋กœ ์ด๋™ํ•˜๋Š” ๋งํฌ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•œ๋‹ค. 2. ์‚ฌ์šฉ์ž๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚˜๋Š” ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ณ , Github ์ธ์ฆ์„ ํ•œ๋‹ค. 3. ์ธ์ฆ์„ ์„ฑ๊ณตํ•˜๋ฉด {์„ค์ •ํ•œ ์ฝœ๋ฐฑ URL}?code={์ธ์ฆ์ฝ”๋“œ} ๋กœ code ๊ฐ’์„ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜•ํƒœ๋กœ ๋ณด๋‚ด์ค€๋‹ค. 4. ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ code๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐ›๊ณ , https://github.com/login/oauth/access_token ์œผ๋กœ {client_ID, client_Secret, code}๋ฅผ ๋‹ด์•„ POST ์š”์ฒญ์„ ํ•œ๋‹ค. 5. ๊นƒํ—ˆ๋ธŒ ์ธก์—์„œ acc..

  • Dispatcher Servlet์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

    DispatcherServlet ์€ Servlet ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ, HTTP ํ”„๋กœํ† ์ฝœ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ๋จผ์ € ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” Front Controller ์ด๋‹ค. Servlet ์ด๋ž€? Java ์–ธ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ด๋Š” HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ด๋‹ค. public interface Servlet { void init(ServletConfig config) throws ServletException; ServletConfig getServletConfig(); void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; String getServlet..

  • Swagger API ์ ์šฉ ์‹œ, Controller ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋”๋Ÿฌ์›Œ์ง„๋‹ค.. ๋ถ„๋ฆฌํ•ด๋ณด์ž

    Swagger ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, API ๋ฌธ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•ด์ฃผ๋ฉฐ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. @Tag , @Operation , @ApiResponses ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šค์›จ๊ฑฐ ๋ฌธ์„œ์— ๋ถ€๊ฐ€์ ์ธ ์„ค๋ช…์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ์–ด์„œ API ๋ฌธ์„œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. @RestController @RequestMapping("/api/v1/posts") @RequiredArgsConstructor public class PostApiController { private final PostService postService; @Tag(name = "Post", description = "๊ฒŒ์‹œ๊ธ€ ๊ด€๋ จ API") @Operation(summary = "๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ", descrip..

  • Dto Validation ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— AOP๋ฅผ ์ ์šฉํ•ด๋ณด์ž!

    ๊ธฐ์กด ๋ฐฉ์‹ implementation 'org.springframework.boot:spring-boot-starter-validation' ์œ„ validation ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Controller ์—์„œ @RequestBody ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” Request Dto ์˜ ํ•„๋“œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค. public class UserCreateRequest { @Email(message = "์˜ฌ๋ฐ”๋ฅธ ์ด๋ฉ”์ผ ํ˜•์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. '@' ๋ฅผ ํฌํ•จ์‹œ์ผœ์ฃผ์„ธ์š”.") private String email; @Length(min = 8,message = "๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ตœ์†Œ 8์ž ์ด์ƒ์ž…๋‹ˆ๋‹ค.") private String password; } ์œ„์™€ ๊ฐ™์ด ๋งคํ•‘๋˜๋Š” ํ•„๋“œ์— validation์—์„œ ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„..

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ„์„ ๋„๊ตฌ Jacoco๋ฅผ ์ ์šฉํ•ด๋ณด์ž!

    Jacoco ๋ž€? Java Code Coverage ์˜ ์ค„์ž„๋ง๋กœ, ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ„์„์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. โ“ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ž€? ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ถฉ์กฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. 1. ๋ผ์ธ ์ปค๋ฒ„๋ฆฌ์ง€ : ์ฝ”๋“œ ํ•œ ์ค„์ด ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰๋œ๋‹ค๋ฉด ์ถฉ์กฑ๋œ๋‹ค. 2. ๊ฒฐ์ • ์ปค๋ฒ„๋ฆฌ์ง€ : ๋ธŒ๋žœ์น˜ ์ปค๋ฒ„๋ฆฌ์ง€๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค. ๋ชจ๋“  ์กฐ๊ฑด์‹์˜ ๋‚ด๋ถ€ ์กฐ๊ฑด์ด true/ false ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉด ์ถฉ์กฑํ•œ๋‹ค. 3. ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€ : if ์กฐ๊ฑด๋ฌธ ์•ˆ์˜ ๊ฐœ๋ณ„ ์กฐ๊ฑด์‹์ด false ์ธ๊ฒฝ์šฐ์™€ true์ธ ๊ฒฝ์šฐ ๋ชจ๋‘ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ์ถฉ์กฑํ•œ๋‹ค. ๊ฒฐ์ • ์ปค๋ฒ„๋ฆฌ์ง€๋ณด๋‹ค ๋” detailํ•œ ์ปค๋ฒ„๋ฆฌ์ง€์ด๋‹ค. ์ ์šฉํ•ด๋ณด์ž ์ ์šฉ ์ „ build.gradle plugins { id 'java' id 'org.springframework.boot'..

  • @ControllerAdvice ๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

    ๐Ÿ“Œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ๋‚ด๊ฐ€ ์ฃผ๋กœ ํ–ˆ๋˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Enum ํƒ€์ž…์˜ ErrorCode ์ •์˜ @AllArgsConstructor @Getter public enum ErrorCode { DUPLICATE_USERNAME(HttpStatus.CONFLICT, "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์‚ฌ์šฉ์ž๋ช… ์ž…๋‹ˆ๋‹ค."); private HttpStatus httpStatus; private String message; } Http ์ƒํƒœ ์ฝ”๋“œ์™€ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ „๋‹ฌํ•  ๋ฉ”์„ธ์ง€ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด Enum ํƒ€์ž…์˜ ErrorCode ๋ฅผ ์ •์˜ํ•œ๋‹ค. RuntimeException ์„ ์ƒ์†ํ•˜๋Š” AppException์„ ์ •์˜ @Getter public class AppException extends RuntimeExc..

Book๐Ÿ“š

  • NL ์กฐ์ธ์˜ ์›๋ฆฌ

    ์กฐ์‹œํ˜•๋‹˜์˜ ์นœ์ ˆํ•œ SQL ํŠœ๋‹์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. NL ์กฐ์ธ์€ Nested Loop ์กฐ์ธ์˜ ์•ฝ์ž๋กœ ์ค‘์ฒฉ ๋ฃจํ”„ ๋ฌธ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์กฐ์ธ์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ์œ„ ๋‘ ํ…Œ์ด๋ธ”๋ฅผ ์‚ฌ์› ๋ฒˆํ˜ธ๋กœ ์กฐ์ธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹์œผ๋กœ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค. for(int i=0;i= '19960101' AND e.๋ถ€์„œ์ฝ”๋“œ = 'Z123' AND c.๊ด€๋ฆฌ์‚ฌ์›๋ฒˆํ˜ธ = e.์‚ฌ์›๋ฒˆํ˜ธ AND c. ์ตœ์ข…์ฃผ๋ฌธ๊ธˆ์•ก >= 20000 ์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ ํ›„, ROWS | OPERATION 5 |NESTED LOOPS 3 |TABLE ACCESS BY INDEX ROWID OF ์‚ฌ์› 2780 | INDEX RANGE SCAN OF ์‚ฌ์›_X1 5 | TABLE ACCESS BY INDE..

  • Chapter 7. ๊ฐ์ฒด ๋ถ„ํ•ด

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

  • Where ์กฐ๊ฑด ์ ˆ์—์„œ Between ๊ณผ Like

    ์กฐ์‹œํ˜•๋‹˜์˜ ์นœ์ ˆํ•œ SQL ํŠœ๋‹์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. Between ๊ณผ Like์˜ ์Šค์บ” ๋ฒ”์œ„ ์ฐจ์ด Between ๊ณผ Like ๋Š” ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์–ธ๋œป ๋น„์Šทํ•ด๋ณด์ด์ง€๋งŒ ํšจ์œจ์ ์ธ ์ธก๋ฉด์—์„œ ์‚ดํŽด๋ณด๋ฉด ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•™์ƒ ํ…Œ์ด๋ธ”์— ์ƒ๋…„์›” ์นผ๋Ÿผ๊ณผ ํ•™์  ์นผ๋Ÿผ์ด ์žˆ๊ณ  [์ƒ๋…„์›” + ํ•™์ ] ์ด ์ธ๋ฑ์Šค๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. 1995๋…„์ƒ์ด๋ฉด์„œ ํ•™์ ์ด 'B'์ธ ๋ ˆ์ฝ”๋“œ๋“ค์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 1๏ธโƒฃ Between ์˜ ๊ฒฝ์šฐ SELECT * FROM ํ•™์ƒ WHERE ์ƒ๋…„์›” BETWEEN "199501" AND "199512" AND ํ•™์  = 'B'; 2๏ธโƒฃ Like ์˜ ๊ฒฝ์šฐ SELECT * FROM ํ•™์ƒ WHERE ์ƒ๋…„์›” LIKE "1995%" AND ํ•™์  = 'B'; ์™€ ๊ฐ™..

  • Where ์กฐ๊ฑด ์ ˆ์—์„œ Between ๊ณผ in ์˜ ์ฐจ์ด

    ์กฐ์‹œํ˜•๋‹˜์˜ ์นœ์ ˆํ•œ SQL ํŠœ๋‹์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. Between ๊ณผ In ์กฐ๊ฑด์ ˆ์˜ ์ธ๋ฑ์Šค ์Šค์บ” ๋ฒ”์œ„ ๋น„๊ตํ•ด๋ณด๊ธฐ ์œ„์™€ ๊ฐ™์ด, DEPTNO ์™€ JOB ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. SELECT * FROM TABLE WHERE DEPTNO BETWEEN 10 AND 30 AND JOB = 'B' ์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ๋จผ์ €, DEPTNO๊ฐ€ 10์ด๋ฉด์„œ JOB์ด 'B' ์ธ ๋ ˆ์ฝ”๋“œ์—์„œ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•˜์—ฌ DEPTNO ๊ฐ€ 30์ด๋ฉด์„œ JOB์ด 'B'๊ฐ€ ์•„๋‹ˆ๊ฒŒ ๋˜๋Š” ๋ ˆ์ฝ”๋“œ ๊นŒ์ง€ ํƒ์ƒ‰ํ•  ๊ฒƒ์ด๋‹ค. ์ˆ˜์ง์  ํƒ์ƒ‰์€ ํ•œ๋ฒˆ ์ด๋ฃจ์–ด์ง€์ง€๋งŒ, ์ˆ˜ํ‰์  ํƒ์ƒ‰์ด ๋งŽ์€ ๋ ˆ์ฝ”๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฒŒ๋œ๋‹ค. ๋ฐ˜๋ฉด์—, SELECT * FROM TABLE WHERE DEPTNO IN (10,20,30) AND..

  • Chapter 6. ๋ฉ”์‹œ์ง€์™€ ์ธํ„ฐํŽ˜์ด์Šค

    ์กฐ์˜ํ˜ธ๋‹˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์™€ ๋ฉ”์„œ๋“œ ๐Ÿ’ก ๋ฉ”์‹œ์ง€๋ž€, ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์œ ์ผํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ž๋ฐ” ๋ฌธ๋ฒ•์„ ์˜ˆ๋กœ ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ์ด ๋ฉ”์‹œ์ง€ ์ „์†ก์ด๋‹ค. ์ˆ˜์‹ ์ž.์˜คํผ๋ ˆ์ด์…˜๋ช…(์ธ์ž); [ ex. condition.isSatisfiedBy(screening) ] โ“ ๋ฉ”์„ธ์ง€์™€ ๋ฉ”์„œ๋“œ๋Š” ๊ทธ๋Ÿฌ๋ฉด ๊ฐ™์€๊ฑฐ ์•„๋‹ˆ์•ผ? ๋งŒ์•ฝ, ์ˆ˜์‹ ์ž ๊ฐ์ฒด๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ๊ตฌํ˜„์ฒด๋ผ๋ฉด ๋งž๋Š” ๋ง์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๐Ÿšจ ์ˆ˜์‹ ์ž ๊ฐ์ฒด๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜๋˜์–ด์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์‹ค์ œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ๋”ฐ๋ผ์„œ, ๐Ÿ’ก ๋ฉ”์„œ๋“œ๋Š” ์ˆ˜์‹ ์ž ๊ฐ์ฒด๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„, ์‹ค์ œ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค(ํ•จ์ˆ˜)๋ฅผ ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ..

  • ๋ฐฐ์น˜ I/O์™€ ์ธ๋ฑ์Šค๋ฅผ ๋ฏฟ๊ณ  ์ฟผ๋ฆฌ์— ORDER BY๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

    ์กฐ์‹œํ˜•๋‹˜์˜ ์นœ์ ˆํ•œ SQL ํŠœ๋‹์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค์˜ ๋น„ํšจ์œจ์ ์ธ ๋žœ๋ค I/O ์—‘์„ธ์Šค ์ธ๋ฑ์Šค๋Š” ํฐ ํ…Œ์ด๋ธ”์—์„œ ์†Œ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ• ๋•Œ ์œ ์šฉํ•˜๋‹ค๊ณ  ๋ฐฐ์› ๋‹ค. ์ธ๋ฑ์Šค๋กœ ๋ ˆ์ฝ”๋“œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค์™€ ์—ฐ๊ฒฐ๋œ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ธ”๋ก ์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ ๋ ˆ์ฝ”๋“œ์— ์ ‘๊ทผํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋žœ๋ค I/O ๋กœ ์ ‘๊ทผํ•ด์•ผํ•˜๊ณ  ์ด ๋žœ๋ค I/O๊ฐ€ ๋งŽ์•„์ง€๋ฉด, ์ „์ฒด ํ…Œ์ด๋ธ”์„ ํ’€ ์Šค์บ”ํ•ด์„œ ์‹œํ€€์…œ ์—‘์„ธ์Šค๋กœ ์ ‘๊ทผํ•˜๋Š”๊ฒŒ ๋น„์šฉ์ด ๋” ์ ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๐Ÿ’ก ์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ๋น„ํšจ์œจ์„ ์–ด๋Š์ •๋„ ๊ฐ์†Œ์‹œํ‚ค๊ธฐ ์œ„ํ•ด, ์ด์ „ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ–ˆ๋˜ ํ…Œ์ด๋ธ” ๋ธ”๋ก ์ •๋ณด๋ฅผ ์ €์žฅํ•ด๋‘์—ˆ๋‹ค๊ฐ€ ์ผ์น˜ํ•˜๋ฉด ๋ฐ”๋กœ ์ ‘๊ทผํ•˜๋Š” ์บ์‹ฑ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธดํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค๋กœ ์ •๋ ฌ๋œ ๋ ˆ์ฝ”๋“œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ธ”๋ก์„ ๊ฐ€๋ฆฌํ‚ค๋ฉด ํšจ๊ณผ๋ฅผ ๋ณด๊ธฐ ํž˜๋“  ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ณ ์•ˆํ•ด๋‚ธ..

  • Chapter 5. ์ฑ…์ž„ ํ• ๋‹นํ•˜๊ธฐ

    ์กฐ์˜ํ˜ธ๋‹˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ฑ…์ž„ ์ฃผ๋„ ์„ค๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„ํ•˜๊ฒŒ๋˜๋ฉด ์œ ์—ฐํ•œ ์„ค๊ณ„๋ฅผ ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ์• ์ดˆ์—, '๋ฐ์ดํ„ฐ' ๋ผ๋Š” ๊ฒƒ์€ ๊ฐ์ฒด์˜ ๊ตฌ์ฒด์ ์ธ ์ •๋ณด์ด๊ณ , ์ด๋Š” ๊ตฌํ˜„์— ํ•ด๋‹นํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์  ์„ค๊ณ„๋Š” ๊ฐ์ฒด์˜ ๊ตฌํ˜„๋ถ€์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์„ค๊ณ„ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์ ์œผ๋กœ ๊ฐ์ฒด ๊ฐ„ ํ˜‘๋ ฅ์„ ์ƒ๊ฐํ•˜๊ฒŒ ๋˜๋ฉด ์™ธ๋ถ€ ๊ฐ์ฒด์—๊ฒŒ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์บก์Šํ™”๋ฅผ ๋ฐฉํ•ดํ•˜๊ฒŒ๋œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ, ๊ตฌํ˜„์„ ์ค‘์ ์œผ๋กœํ•œ ์„ค๊ณ„๋Š” ์บก์Šํ™”๋ฅผ ์ €ํ•ดํ•˜๊ณ  ์‘์ง‘๋„๋Š” ๋‚ฎ์ถ”๊ณ  ๊ฒฐํ•ฉ๋„๋Š” ๋†’์ž„์œผ๋กœ์„œ ๋ณ€ํ™”์— ์ทจ์•ฝํ•œ ์„ค๊ณ„๊ฐ€ ๋œ๋‹ค. ๐Ÿ’ก ๋”ฐ๋ผ์„œ, ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ํ•ต์‹ฌ์ธ ํ˜‘๋ ฅ, ์ฑ…์ž„, ์—ญํ•  ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฑ…์ž„ ์„ ์ค‘์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์œ ์—ฐํ•œ ์„ค๊ณ„๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. [..

  • ์ธ๋ฑ์Šค ํŠœ๋‹

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

  • ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ ๊ฒฐ์ •๊ณผ ๊ฐ€๊ณต

    ์กฐ์‹œํ˜•๋‹˜์˜ ์นœ์ ˆํ•œ SQL ํŠœ๋‹์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ์Šค์บ” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 2 ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 1. ํ…Œ์ด๋ธ” ์ „์ฒด ์Šค์บ” 2. ์ธ๋ฑ์Šค ์Šค์บ” ํ…Œ์ด๋ธ” ์ „์ฒด ์Šค์บ”์€ ๋ง ๊ทธ๋Œ€๋กœ, ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ธ”๋ก ์ „์ฒด๋ฅผ ์Šค์บ”ํ•œ๋‹ค. ์ธ๋ฑ์Šค ์Šค์บ”์€ ์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ผ์ •๋Ÿ‰์„ ์Šค์บ”ํ•œ๋‹ค. โ“ ์ธ๋ฑ์Šค ์Šค์บ” ๋ฐฉ์‹์ด ํ•ญ์ƒ ์œ ๋ฆฌํ• ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๐Ÿ’ก ์ธ๋ฑ์Šค ์Šค์บ” ๋ฐฉ์‹์€ ํฐ ํ…Œ์ด๋ธ”์—์„œ ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ ์ž ํ• ๋•Œ ์œ ์šฉํ•˜๋‹ค. ์˜ˆ๋กœ, ์ „์ฒด ํ…Œ์ด๋ธ” ์Šค์บ”์„ ์ง„ํ–‰ํ•˜๋ฉด ๋ฒ„ํผ ์บ์‹œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์‹œ, ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ์˜ค๋žœ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ•œ๋ฒˆ ๊ฐ€์ ธ์˜ค๊ณ  ๋‚œ ๋’ค์—๋Š” ํ•ด๋‹น ํ…Œ์ด๋ธ”๊ณผ ๊ด€๋ จํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ฌผ๋ฆฌ์  I/O ์—†์ด ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ฑ์Šค ์Šค์บ”..

  • SQL ์ฒ˜๋ฆฌ ๊ณผ์ •๊ณผ I/O

    ์กฐ์‹œํ˜•๋‹˜์˜ ์นœ์ ˆํ•œ SQL ํŠœ๋‹์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. SQL ์ฒ˜๋ฆฌ ๊ณผ์ • SQLํŒŒ์‹ฑ๊ณผ ์ตœ์ ํ™” 1๏ธโƒฃ SQL ํŒŒ์‹ฑ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ SQL์„ ์ „๋‹ฌ๋ฐ›์œผ๋ฉด SQL ํŒŒ์„œ๊ฐ€ ํŒŒ์‹ฑ์„ ์ง„ํ–‰ํ•œ๋‹ค. ๐Ÿ’ก SQL ๋ฌธ์„ ์ด๋ฃจ๋Š” ๊ฐœ๋ณ„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํŒŒ์‹ฑ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๐Ÿ’ก ๊ทธ๋ฆฌ๊ณ  ์ „๋‹ฌ ๋ฐ›์€ SQL ๋ฌธ์—์„œ ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜ (์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ ๋“ฑ) ๋‚˜ ์˜๋ฏธ์ƒ ์˜ค๋ฅ˜(์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ…Œ์ด๋ธ” ํ˜น์€ ์ปฌ๋Ÿผ ์‚ฌ์šฉ ๋“ฑ)๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. 2๏ธโƒฃ SQL ์ตœ์ ํ™” ๐Ÿ’ก ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๋‹ค์–‘ํ•œ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋น„๊ตํ•œ ํ›„, ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์„ ํƒํ•œ ๊ฒฝ๋กœ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋˜๋Š” ํ”„๋กœ์‹œ์ € ํ˜•ํƒœ๋กœ ํฌ๋งทํŒ…ํ•œ๋‹ค. ์‹คํ–‰ ๊ณ„ํš๊ณผ ๋น„์šฉ MySQL ์„œ๋ฒ„๋กœ ์š”์ฒญ๋œ ์ฟผ๋ฆฌ๋Š” ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜์ง€๋งŒ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด ..

  • Chapter 4. ์„ค๊ณ„ ํ’ˆ์งˆ๊ณผ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„

    ์กฐ์˜ํ˜ธ๋‹˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ˜‘๋ ฅ, ์ฑ…์ž„, ์—ญํ•  ๊ทธ๋ฆฌ๊ณ  ์„ค๊ณ„ ํ’ˆ์งˆ ํ˜‘๋ ฅ์€ ๊ฐ์ฒด๋“ค ๊ฐ„ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์ง„ํ–‰๋˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์ด๋‹ค. ์ฑ…์ž„์€ ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ํ–‰๋™์ด๋‹ค. ์—ญํ• ์€ ์ฑ…์ž„๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค. ํ˜‘๋ ฅ, ์ฑ…์ž„, ์—ญํ•  ํ• ๋‹น์ด ์ž˜ ๋˜์–ด์•ผ ๋ฐ”๋žŒ์งํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๐Ÿ’ก ๊ทธ ์ค‘์—์„œ๋„ ์ฑ…์ž„์ด ์ž˜ ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๐Ÿšจ ์—ญํ• ์€ ์ฑ…์ž„์˜ ์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ฑ…์ž„์˜ ํ’ˆ์งˆ์— ์˜์กดํ•˜๊ฒŒ ๋œ๋‹ค. ํ˜‘๋ ฅ ์—ญ์‹œ, ์ฑ…์ž„์ด ์ž˜ ํ• ๋‹น๋˜์ง€ ๋ชปํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์—†๊ฒŒ๋œ๋‹ค. โ“ ์ฑ…์ž„์„ ์–ด๋–ค ์‹์œผ๋กœ ํ• ๋‹นํ•ด์•ผํ• ๊นŒ? ๋น„์Šทํ•œ ์ฑ…์ž„๋ผ๋ฆฌ ํ•˜๋‚˜์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ํ˜‘๋ ฅํ•˜๋Š” ๊ฒƒ ๋ผ๋ฆฌ ๋ชจ์•„๋‘๋Š” ๋†’์€ ์‘์ง‘๋„์™€ ๋‹ค๋ฅธ ์ฑ…์ž„๋ผ๋ฆฌ ๋ถ„๋ฆฌํ•˜๋Š” ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ๋งŒ์กฑํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ, ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ..

  • Chapter 3. ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ

    ์กฐ์˜ํ˜ธ๋‹˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๐Ÿ’ก ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์ด๋‹ค. ํด๋ž˜์Šค, ์ƒ์†, ์ง€์—ฐ ๋ฐ”์ธ๋”ฉ๊ณผ ๊ฐ™์€ ๊ฐœ๋…์€ ๊ตฌํ˜„์— ์ดˆ์ ์ด ๋งž์ถ”์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ํ˜‘๋ ฅ์ด ํ•„์š”ํ•˜๊ณ  ํ˜‘๋ ฅ์„ ์œ„ํ•ด ์–ด๋–ค ์—ญํ• ๊ณผ ์ฑ…์ž„์ด ํ•„์š”ํ•œ์ง€ ๊ณ ๋ฏผ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค. 1๏ธโƒฃ ํ˜‘๋ ฅ ๊ฐ์ฒด๋“ค์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์„ ๋งํ•œ๋‹ค. ๋‘ ๊ฐ์ฒด์˜ ํ˜‘๋ ฅ์€, ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ๋„์›€์„ ์š”์ฒญํ•  ๋•Œ ์‹œ์ž‘๋œ๋‹ค. ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ƒ์„ธํ•œ ๋‚ด๋ถ€ ๊ตฌํ˜„์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๐Ÿ’ก ๋ฉ”์‹œ์ง€ ์ „์†ก์„ ํ†ตํ•ด ํ˜‘๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์— ์ ‘๊ทผํ•˜์—ฌ ๋™์ž‘ํ•œ๋‹ค๋ฉด, ๊ฐ์ฒด์˜ ์ž์œจ์„ฑ์„ ํ›ผ์†ํ•˜๋Š” ํ–‰์œ„์ด๋‹ค. ๋”ฐ๋ผ์„œ, ..

  • Chapter 2. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

    ์กฐ์˜ํ˜ธ๋‹˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ, ์œ ๋…ํ•ด์•ผํ•  ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•œ์ง€ ๊ณ ๋ฏผํ•˜๊ธฐ ์ „์— ์–ด๋–ค ๊ฐ์ฒด๋“ค์ด ํ•„์š”ํ•œ์ง€ ๊ณ ๋ฏผํ•ด์•ผํ•œ๋‹ค. ์ฝ”๋“œ๋กœ์„œ ๋ฐ”๋ผ๋ณด๊ธฐ ์ „์— ๊ธฐ๋Šฅ์ด ๋™์ž‘๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ž˜ ์ƒ๊ฐํ•˜๋ผ๋Š” ์˜๋ฏธ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐ์ฒด๋ฅผ ๊ณ ๋ฆฝ๋œ ์กด์žฌ๋กœ ๋ฐ”๋ผ๋ณด์ง€ ๋ง๊ณ  ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ํ˜‘๋ ฅ์ž๋กœ ๋ฐ”๋ผ๋ณด์•„์•ผ ํ•œ๋‹ค. ๋ฌด์ž‘์ • ๊ฒฐํ•ฉ๋„๋ฅผ ์ค„์ด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ธฐ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ํ˜‘๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ํด๋ž˜์Šค์˜ ๊ฒฝ๊ณ„๋ฅผ ์ž˜ ๊ตฌ๋ถ„ ์ง€์–ด์•ผ ํ•œ๋‹ค. Chapter 1์—์„œ๋„ ๋งŽ์ด ์„ค๋ช…ํ–ˆ๋“ฏ์ด, ๊ฐ์ฒด๋Š” ์ž์‹ ์˜ ํ•„๋“œ๋ฅผ ์ž์‹ ์ด ๊ด€๋ฆฌํ•˜๋„๋ก ํ•ด์•ผํ•˜๋ฉฐ ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์บก์Šํ™”๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์— ๊ณต๊ฐœํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘..

  • Chapter 1. ๊ฐ์ฒด, ์„ค๊ณ„

    ์กฐ์˜ํ˜ธ๋‹˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์— ์ทจ์•ฝํ•œ ์ฝ”๋“œ public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller) { this.ticketSeller = ticketSeller; } public void enter(Audience audience) { // ๊ด€๋žŒ๊ฐ ๊ฐ€๋ฐฉ์— ์ดˆ๋Œ€๊ถŒ์ด ์žˆ๋‹ค๋ฉด? if (audience.getBag().hasInvitation()) { Ticket ticket = ticketSeller.getTicketOffice().getTicket(); // ํ‹ฐ์ผ“ ์ œ๊ณต audience.getBag().setTicket(ticket..

  • ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๊ธฐ์ดˆ ์ง€์‹

    ๋„์„œ ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์‹๋“ค์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์ž. ๐Ÿ“Œ RDBMS vs NoSQL RDBMS๋Š” ์ž๋ฃŒ๋ฅผ ํ…Œ์ด๋ธ”๊ณผ ์—ด, ์นผ๋Ÿผ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  SQL์„ ์ด์šฉํ•ด ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ, ๊ทธ ๊ด€๊ณ„์— ๋”ฐ๋ผ JOIN ํ•˜์—ฌ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ’ก ์ •ํ˜•ํ™” ๋œ ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ๊ตฌ์กฐํ™”๋˜์–ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. NoSQL์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ํŠนํ™”๋˜์–ด ์žˆ๋‹ค. ๐Ÿ’ก ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๊ฐ€ ๋น„์ •ํ˜•์ด๊ฑฐ๋‚˜ ์•„์ฃผ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค. ๐Ÿ“Œ Scale Up vs Scale Out Scale Up ์€ ์„œ๋ฒ„์— ๊ณ ์‚ฌ์–‘ ์ž์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ–‰์œ„์ด๊ณ , Scale ..

CS

  • equals() ์™€ hashcode()

    equals() ์™€ hashcode() ๋ฉ”์„œ๋“œ์˜ ์—ญํ• ๊ณผ ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด์ž. 1๏ธโƒฃ ๋™์ผ์„ฑ๊ณผ ๋™๋“ฑ์„ฑ ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผ์„ฑ์€ ๋ฉ”๋ชจ๋ฆฌ์ƒ ๋™์ผํ•œ ์œ„์น˜์— ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜๊ณ , ๋™๋“ฑ์„ฑ์€ ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ์ž๋ฐ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์›์‹œ ํƒ€์ž…(Primitive Type)๊ณผ ์ฐธ์กฐ ํƒ€์ž…(Reference Type) ๋ฐ์ดํ„ฐ ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์—๋Š” ์Šคํƒ ์˜์—ญ๊ณผ ํž™ ์˜์—ญ์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์›์‹œ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ์Šคํƒ ์˜์—ญ์— ๊ฐ’์œผ๋กœ์„œ ๊ด€๋ฆฌ๋˜์ง€๋งŒ, ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ํž™ ์˜์—ญ์—์„œ ์ƒ์„ฑ๋˜๊ณ  ์Šคํƒ ์˜์—ญ์—์„œ๋Š” ํž™ ์˜์—ญ์˜ ์œ„์น˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. public class Main { public static void main(String[] args) { int port ..

  • Hash ์ž๋ฃŒ๊ตฌ์กฐ์™€ ํ•ด์‹œ ์ถฉ๋Œ

    Hash Table ์ด๋ž€ Hash Table์€ ๋ฐ์ดํ„ฐ๋ฅผ key-value ํ˜•์‹์œผ๋กœ ๋ณด๊ด€ํ•˜์—ฌ ๊ฒ€์ƒ‰ ยท ์‚ฝ์ž… ยท ์‚ญ์ œ๋ฅผ O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. Hash Table์€ key ๊ฐ’์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์—, key ๊ฐ’์€ ๊ณ ์œ ํ•ด์•ผํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ ์œ ํ•œ key ๊ฐ’์„ ๋งŒ๋“œ๋Š” ์ž‘์—…์€ ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ ๋‹ด๋‹นํ•˜๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” key ๊ฐ’์˜ ASCII ๊ฐ’์„ ํ•ฉํ•˜์—ฌ ๋งŒ๋“œ๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ key๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ, ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ์šฐ์—ฐํžˆ key ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๐Ÿ’ก ์ด๋ฅผ ํ•ด์‹œ ์ถฉ๋Œ์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด, key ๊ฐ’์ด ์ค‘๋ณต๋˜์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋Œ€์ฒ˜ํ•ด์•ผํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ฒด์ธ๋ฒ• (Seperate C..

  • ๋ณ‘ํ•ฉ ์ •๋ ฌ (Merge Sort) ์„ ๊ตฌํ˜„ํ•ด๋ณด์ž

    ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๐Ÿ’ก ์ •๋ ฌ์˜ ์ข…๋ฅ˜์™€ ๋ฐฉ์‹ 1. ๋ฒ„๋ธ” ์ •๋ ฌ : 2๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ณ„์† ๋น„๊ตํ•ด๋‚˜๊ฐ€๋ฉฐ ๊ฐ’์ด ํฐ ์›์†Œ๊ฐ€ ์•ž์— ์žˆ๋Š” ๊ฒฝ์šฐ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•œ๋‹ค. ์ œ์ผ ํฐ ๊ฐ’(์˜ค๋ฆ„์ฐจ์ˆœ์˜ ๊ฒฝ์šฐ)์„ ์ œ์ผ ๋’ค๋กœ ๋ณด๋‚ด์–ด ์ตœ์ข…์ ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ํ•œ๋ฒˆ ์ˆœํšŒํ–ˆ์„ ๋•Œ ๋‘ ์›์†Œ๊ฐ„ ์œ„์น˜๊ฐ€ ๋ณ€ํ•œ ์ ์ด ์—†๋‹ค๋ฉด ์ˆœํšŒ๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์„ ํƒ ์ •๋ ฌ : ์›์†Œ๋“ค์„ ์ˆœํšŒํ•˜์—ฌ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์€ ๋’ค(์„ ํƒ), ์ œ์ผ ์•ž ์›์†Œ์™€ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟˆ์œผ๋กœ์„œ ์ž‘์€ ๊ฐ’์ด ๊ณ„์† ์•ž์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ์ตœ์ข…์ ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 3. ์‚ฝ์ž… ์ •๋ ฌ : 2๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ N๋ฒˆ์งธ ์›์†Œ๊นŒ์ง€ N-1๊นŒ์ง€์˜ ..

  • Linked List ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ

    ๋ฆฌ์ŠคํŠธ์—๋Š” ์—ฐ์†ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ArrayList์™€ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ์•ˆ์— ๋‹ค์Œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด ์—ฐ๊ฒฐ๋˜๋Š” LinkedList๊ฐ€ ์žˆ๋‹ค. ๊ฐ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1๏ธโƒฃ ArrayList 1. ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋‚˜์—ด๋˜์–ด ์žˆ์–ด, ํŠน์ • ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ O(1) ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์„ ํ˜• ํƒ์ƒ‰์˜ ๊ฒฝ์šฐ O(n), ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ ์ด๋ถ„ํƒ์ƒ‰์˜ ๊ฒฝ์šฐ O(logN) ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ์ค‘๊ฐ„ ์œ„์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž… ยท ์‚ญ์ œ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์˜ ์œ„์น˜๋ฅผ ์˜ฎ๊ฒจ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N) ์ด๋‹ค. 2๏ธโƒฃ LinkedList 1. ํŠน์ • ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ์›์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ์—, ์ˆœํšŒ๋ฅผ ํ•ด์„œ ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ O(N) ์ด๋‹ค. 2. ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ, ์‹œ์ž‘ ๋ถ€๋ถ„..

  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ฒ•

    ๋„์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ์™€ ๊ฐ•์˜ ์šด์˜์ฒด์ œ-๋ฐ˜ํšจ๊ฒฝ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ž€? ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ผ๊ด€๋˜๊ฒŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ํ˜„๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋„๋ก ์ง€์›ํ•œ๋‹ค. ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ์™€ ์ƒ๊ด€์—†์ด ํ”„๋กœ์„ธ์Šค์— ์ปค๋‹ค๋ž€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์„ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค. โ“ ์ด๋ก ์ ์œผ๋กœ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฌดํ•œ๋Œ€์˜ ํฌ๊ธฐ์ธ๋ฐ, ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ผ๊นŒ? ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ ์ค‘ ์ผ๋ถ€๋ฅผ ํ•˜๋“œ๋””์Šคํฌ์˜ ์ผ๋ถ€ ๊ณต๊ฐ„์ธ ์Šค์™‘ ์˜์—ญ์œผ๋กœ ์˜ฎ๊ธด๋‹ค. ์Šค์™‘ ์˜์—ญ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํ•˜๋“œ๋””์Šคํฌ์˜ ์˜์—ญ์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์Šค์™‘ ์˜์—ญ์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ์Šค์™‘ ์•„์›ƒ์ด๋ผ ๋ถ€..

  • ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

    ๋„์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ์™€ ๊ฐ•์˜ ์šด์˜์ฒด์ œ-๋ฐ˜ํšจ๊ฒฝ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ผ์™€์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์—์„œ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ์— ์ค‘์š”ํ•œ ์˜ํ–ฅ์„ ์ค€๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž (Memory Manage Unit, MMU) ๋ผ๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค. ๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—… ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์ผ๋ถ€๋งŒ ๋จผ์ € ๊ฐ€์ ธ์˜ค๊ณ  ๋‚˜๋จธ์ง€ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ง€์†์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ  ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์—†๋”๋ผ๋„ ์•ž์œผ๋กœ ํ•„์š”ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ๋„ ํ•œ๋‹ค. ๋ฐฐ์น˜ ์ž‘์—… ๊ฐ€์ ธ์˜จ ํ”„๋กœ์„ธ์Šค์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ..

  • ๊ต์ฐฉ ์ƒํƒœ(DeadLock)

    ๋„์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ์™€ ๊ฐ•์˜ ์šด์˜์ฒด์ œ-๋ฐ˜ํšจ๊ฒฝ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ ๊ต์ฐฉ ์ƒํƒœ๋ž€? ํ”„๋กœ์„ธ์Šค๋“ค์ด ์„œ๋กœ๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋Œ€๊ธฐ์ค‘์ธ ์ƒํƒœ์ด๋‹ค. CPU ์Šค์ผ€์ค„๋ง ํŒŒํŠธ์— ๋‚˜์™”๋˜ ์•„์‚ฌ ํ˜„์ƒ๊ณผ๋Š” ๋‹ค๋ฅธ๋ฐ, ์•„์‚ฌ ํ˜„์ƒ์˜ ๊ฒฝ์šฐ ํŠน์ • ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ณ„์† ๋ฐ€๋ ค ์žฅ๊ธฐ๊ฐ„ CPU๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด๊ณ  ๊ต์ฐฉ์ƒํƒœ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋‹ˆ ์„œ๋กœ์˜ ์ž์›์„ ํ• ๋‹น๋ฐ›๊ธฐ ์œ„ํ•ด ๋ฌดํ•œ์ • ๋Œ€๊ธฐํ•˜๋Š” ์ƒํƒœ์ธ ๊ฒƒ์ด๋‹ค. ๊ต์ฐฉ ์ƒํƒœ๋Š” ๋‹ค์Œ 4๊ฐ€์ง€ ์กฐ๊ฑด์„ ๐Ÿ’ก ๋ชจ๋‘ ๋งŒ์กฑํ–ˆ์„ ๋•Œ, ๋ฐœ์ƒํ•œ๋‹ค. 1. ์ƒํ˜ธ ๋ฐฐ์ œ 2. ๋น„์„ ์  3. ์ ์œ ์™€ ๋Œ€๊ธฐ 4. ์›ํ˜•๋Œ€๊ธฐ ์ƒํ˜ธ ๋ฐฐ์ œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ž์›์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋Š” ๋ฐฐํƒ€์ ์ธ ์ž์›์ด์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์ž์›์ด ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ์„œ ๋ณดํ˜ธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ž์›์„ ์‚ฌ์šฉํ•  ..

  • ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”

    ๋„์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ์™€ ๊ฐ•์˜ ์šด์˜์ฒด์ œ-๋ฐ˜ํšจ๊ฒฝ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ Race Condition 2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค์‚ฌ ๊ณต์œ  ์ž์›์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ์ƒํ™ฉ์„ Race Condition ์ด๋ผ๊ณ  ํ•œ๋‹ค. Race Condition์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ณต์œ  ์ž์› ์ ‘๊ทผ ์ˆœ์„œ์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผํ•œ๋‹ค. kernel ์ˆ˜ํ–‰ ์ค‘ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์‹œ ์ปค๋„ ๋ชจ๋“œ๋กœ count๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์žˆ๋˜ ์™€์ค‘์— ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ๋ฃจํ‹ด์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ์ž‘์—…์ด ์ปค๋„๋ชจ๋“œ๋กœ ์ˆ˜ํ–‰ํ•˜๋˜ count๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋‹ค์‹œ ์ปค๋„๋ชจ๋“œ๋กœ ๋Œ์•„์™€์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ• ๋•Œ์—๋Š”, ์ธํ„ฐ๋ŸฝํŠธ์˜ ์ž‘์—…์ด ๋ฐ˜์˜๋œ count๊ฐ€ ์•„๋‹Œ ์ด์ „์— ์ง„ํ–‰์ค‘์ด์—ˆ๋˜ ์ž‘์—…์„ ์ด์–ด์„œ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํ–ˆ๋˜ ์ž‘์—…..

  • CPU ์Šค์ผ€์ค„๋ง

    ๋„์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ์™€ ๊ฐ•์˜ ์šด์˜์ฒด์ œ-๋ฐ˜ํšจ๊ฒฝ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋ง์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜์—ฌ CPU์™€ ์‹œ์Šคํ…œ ์ž์›์„ ์–ด๋–ป๊ฒŒ ๋ฐฐ์ •ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ผ์„ ๋งํ•œ๋‹ค. ๐Ÿ“Œ ์Šค์ผ€์ค„๋ง ์ˆ˜์ค€ ๊ณ ์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง ์žฅ๊ธฐ ์Šค์ผ€์ค„๋ง ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ๊ณ ์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง์€ ์‹œ์Šคํ…œ ๋‚ด์˜ ์ „์ฒด ์ž‘์—… ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์‹œ์Šคํ…œ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜์—ฌ ์–ด๋–ค ์ž‘์—…์„ ์Šน์ธํ• ์ง€, ๊ฑฐ๋ถ€ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ด ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„๋‹ค. ์ €์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹นํ• ์ง€, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋ณด๋‚ผ์ง€ ๋“ฑ์„ ๊ฒฐ์ •ํ•œ๋‹ค. ์ฃผ๋กœ, ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋ง ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ์ค‘๊ฐ„ ์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง ์‹œ์Šคํ…œ์— ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ๊ณ ์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง์ด ์ •ํ•œ๋‹ค๋ฉด ์ค‘๊ฐ„ ์ˆ˜์ค€ ..

  • ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

    ๋„์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ์™€ ๊ฐ•์˜ ์šด์˜์ฒด์ œ-๋ฐ˜ํšจ๊ฒฝ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค ํ”„๋กœ๊ทธ๋žจ์€ ์ €์žฅ์žฅ์น˜์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ •์ ์ธ ์ƒํƒœ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰์„ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์˜จ ๋™์ ์ธ ์ƒํƒœ์ด๋‹ค. ๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค์˜ 5 ๊ฐ€์ง€ ์ƒํƒœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ๊ด„ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์˜ฌ๋ ค๋†“๊ณ  ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ๋ฌดํ•œ์ • ๋Œ€๊ธฐํ•ด์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์‹œ๋ถ„ํ•  ์ž‘์—… ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์„ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ๋ฌธ๋งฅ๊ตํ™˜์ด๋ผ๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, ์ผ๊ด„ ์ž‘์—… ์‹œ ์ƒ๊ธฐ๋Š” CPU์˜ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ์ƒ์„ฑ ์ƒํƒœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์‹คํ–‰์ค€๋น„๋ฅผ ์™„๋ฃŒํ•œ ์ƒํƒœ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ..

  • OSI ๋ชจ๋ธ

    OSI ๋ชจ๋ธ์ด๋ž€? OSI ๋ชจ๋ธ์€ ์ปดํ“จํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ผ๋“ค์€ 7 ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ด๋‹ค. ๐Ÿ’ก ํ†ต์‹ ์ด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ •ํ•œ ๋‹จ๊ณ„์—์„œ ์ด์ƒ์ด ์ƒ๊ธฐ๋ฉด ๊ทธ ๊ณณ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๊ณ„, ์ผ€์ด๋ธ” ๋“ฑ๊ณผ ๊ด€๊ณ„ ์—†์ด ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์•ฝ์†ํ•œ ํ†ต์‹  ํ‘œ์ค€ ๊ทœ๊ฒฉ์ด๋‹ค. ๐Ÿ’ก TCP/IP ๋ชจ๋ธ์€ OSI ๋ชจ๋ธ์„ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ƒํ™œ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค. 1. ๋ฌผ๋ฆฌ ๊ณ„์ธต - ์ „์†ก ๋งค์ฒด์˜ ๋ฌผ๋ฆฌ์ (๊ธฐ๊ณ„์ , ์ „๊ธฐ์ ) ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€ํ•œ ๊ธฐ์ˆ  - ํ•˜๋“œ์›จ์–ด๋กœ ๊ตฌํ˜„ - ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„, ํด๋Ÿญ ๋™๊ธฐํ™”, ๋ฌผ๋ฆฌ์  ์—ฐ๊ฒฐ ํ˜•ํƒœ ๋ฌผ๋ฆฌ ๊ณ„์ธต์€ ์ „๊ธฐ ์‹ ํ˜ธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ณ„์ธต์ด๋‹ค. ์ปดํ“จํ„ฐ๋Š” 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋น„ํŠธ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ†ต์‹ ์ด๋ผ..

  • MySQL ์˜ตํ‹ฐ๋งˆ์ด์ €

    MySQL ์„œ๋ฒ„๋กœ ์š”์ฒญ๋œ ์ฟผ๋ฆฌ๋Š” ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜์ง€๋งŒ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๋‹ค์–‘ํ•˜๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• ์ค‘, ๊ฐ€์žฅ ์ตœ์ ์ด๊ณ  ์ตœ์†Œ์˜ ๋น„์šฉ์ด ์†Œ๋ชจ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๋Š” ์ž‘์—…์„ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค. MySQL ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“ค๊ณ , ๊ฐ ๋‹จ์œ„ ์ž‘์—…์˜ ๋น„์šฉ ์ •๋ณด์™€ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ์˜ˆ์ธก๋œ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด ์‹คํ–‰ ๊ณ„ํš๋ณ„ ๋น„์šฉ์„ ์‚ฐ์ถœํ•œ๋‹ค. ์‚ฐ์ถœ๋œ ๋น„์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ, ๋น„์šฉ์ด ์ตœ์†Œ๋กœ ์†Œ์š”๋˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š” ๐Ÿ’ก ๋น„์šฉ ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ € ์ด๋‹ค. ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ์‹คํ–‰ ๊ณ„ํš์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์‹คํ–‰ ๊ณ„ํš์˜ ๋ถˆํ•ฉ๋ฆฌํ•œ ๋ถ€๋ถ„์„ ์ฐพ์•„๋‚ด๊ณ , ๋” ์ตœ์ ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ์œ ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๐Ÿ“Œ ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”๊ณผ ํ’€ ์ธ๋ฑ์Šค ์Šค์บ” ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์€ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ”์˜..

  • ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™ SOLID

    S : SRP(Single Reposibility Principle), ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์ค‘์š”ํ•œ ๊ธฐ์ค€์€ ๋ณ€๊ฒฝ์ด๋‹ค. ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ• ๋•Œ, ํŒŒ๊ธ‰ํšจ๊ณผ๊ฐ€ ์ ์œผ๋ฉด ๋‹จ์ผ ์ฑ…์ž„ ์›์น™, ์ฆ‰ SRP ์›์น™์„ ์ž˜ ๋”ฐ๋ฅธ ๊ฒƒ์ด๋‹ค. O : OCP(Open/Closed Principle), ๊ฐœ๋ฐฉยทํ์‡„ ์›์น™ ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ์–ด์•ผ ํ•˜๋‚˜, ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด, ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค. ๊ตฌํ˜„ ํด๋ž˜์Šค์™€ ์‹คํ–‰ํด๋ž˜์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” Config ํด๋ž˜์Šค์˜ ๋ณ€๊ฒฝ๋งŒ ์žˆ์œผ๋ฉด ๋ณ€ํ™”๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ตฌํ˜„ํด๋ž˜์Šค์—์„œ์˜ ์ง์ ‘์ ์ธ ์ˆ˜์ •์€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. L : LSP(Liskov Substitutuion Pr..

  • ์šด์˜์ฒด์ œ๋ž€?

    ๋„์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ์™€ ๊ฐ•์˜ ์šด์˜์ฒด์ œ-๋ฐ˜ํšจ๊ฒฝ ๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๐Ÿ“Œ ์šด์˜์ฒด์ œ๋ž€? ์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด ๋ฐ”๋กœ ์œ„์— ์„ค์น˜๋˜์–ด, ์‚ฌ์šฉ์ž ๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. ๐Ÿ’ก ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ณ  ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ์œˆ๋„์šฐ, Mac OS, Linux, Unix ๋“ฑ์ด ์šด์˜์ฒด์ œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์—†๋Š” ๊ธฐ๊ณ„๋Š” ๋งŒ๋“ค ๋‹น์‹œ์— ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ ์™ธ์— ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•  ์ˆ˜ ์—†๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์žˆ๋Š” ๊ธฐ๊ณ„๋Š”, ๊ธฐ๋Šฅ์˜ ์ถ”๊ฐ€๋‚˜ ์„ฑ๋Šฅ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•œ ๊ธฐ๊ณ„์ด๋‹ค. ์ „ํ™”๊ธฐ์™€ ์Šค๋งˆํŠธํฐ์„ ๋น„๊ตํ•ด๋ณด๋ฉด, ์ „ํ™”๊ธฐ๋Š” ๋งŒ๋“ค์–ด์ง„ ๊ธฐ๋Šฅ์ธ ์ „ํ™”๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์Šค๋งˆํŠธํฐ์€ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ..

  • Index(์ธ๋ฑ์Šค)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

    Real MySQL ์ฑ…์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ ํŠœ๋‹์€ ์–ด๋–ป๊ฒŒ ๋””์Šคํฌ I/O๋ฅผ ์ค„์ด๋Š๋ƒ๊ฐ€ ๊ด€๊ฑด์ผ๋•Œ๊ฐ€ ์ƒ๋‹นํžˆ ๋งŽ๋‹ค. ๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ ์นผ๋Ÿผ์˜ ๊ฐ’๊ณผ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์‚ผ์•„ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋‘”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์นผ๋Ÿผ์˜ ๊ฐ’์„ ์ฃผ์–ด์ง„ ์ˆœ์„œ๋กœ ๋ฏธ๋ฆฌ ์ •๋ ฌํ•ด์„œ ๋ณด๊ด€ํ•œ๋‹ค. ๐Ÿ’ก ์กฐํšŒ ์š”์ฒญ ์‹œ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋นจ๋ฆฌ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค. (SELECT) ๐Ÿšจ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ๋•Œ ๋งˆ๋‹ค ํ•ญ์ƒ ๊ฐ’์„ ์ •๋ ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์ด ๋ณต์žกํ•˜๊ณ  ๋Š๋ฆฌ๋‹ค. ( INSERT ยท UPDATE ยท DELETE ) ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ์‹ ๋ณ„๋กœ ๊ตฌ๋ถ„ํ•˜๋ฉด, ๋Œ€ํ‘œ์ ์œผ๋กœ B-Tree ์ธ๋ฑ์Šค์™€ Hash ์ธ๋ฑ..

Error

  • InvalidDefinitionException: No serializer found for class ์—๋Ÿฌ

    com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.nts.domain.user.dto.UserCreateResponse and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.nts.domain.Response["result"]) ๊ฐ„๋‹จํ•œ Post ์ปจํŠธ๋กค๋Ÿฌ API๋ฅผ ๋งŒ๋“ค๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ํ•ด์„ํ•ด๋ณด๋ฉด, jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ..

PS

  • [JAVA] ๋ฐฑ์ค€ 1507๋ฒˆ ใ€G2.๊ถ๊ธˆํ•œ ๋ฏผํ˜ธใ€‘

    ๋ฌธ์ œ 1507๋ฒˆ: ๊ถ๊ธˆํ•œ ๋ฏผํ˜ธ ์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ๊ฐœ์ˆ˜ N(1 โ‰ค N โ‰ค 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฐ๊ฐ์˜ ๋„์‹œ ์‚ฌ์ด์— ์ด๋™ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง„๋‹ค. A์—์„œ B๋กœ ๊ฐ€๋Š” ์‹œ๊ฐ„๊ณผ B์—์„œ A๋กœ ๊ฐ€๋Š” ์‹œ๊ฐ„์€ ๊ฐ™๋‹ค. ๋˜, A์™€ B www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ์ฐธ๊ณ ํ•œ Idea ๋จผ์ € ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋น„์šฉ ๊ทธ๋ž˜ํ”„๊ฐ€ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด๋ฏธ ํ•œ๋ฒˆ ๊ฑฐ์นœ ๋น„์šฉ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ ๋‚˜์„œ, ์ด ๊ทธ๋ž˜ํ”„๋ฅผ ๋‹ค์‹œ ๋ถ„ํ•ด๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋ถ„ํ•ดํ•  ์ˆ˜ ์žˆ์„๊นŒ? ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ costs[u][v] = Math.min(costs[u][v], costs[u][m] + costs[m][v]);โ€‹ ์œ„์™€ ๊ฐ™์ด u์—์„œ v๋กœ ๊ฐ€๋Š” ๋น„์šฉ๋ณด๋‹ค, u์—์„œ m์œผ๋กœ ๊ฐ„..

  • [JAVA] ๋ฐฑ์ค€ 13168๋ฒˆ ใ€G3.๋‚ด์ผ๋กœ ์—ฌํ–‰ใ€‘

    ๋ฌธ์ œ 13168๋ฒˆ: ๋‚ด์ผ๋กœ ์—ฌํ–‰ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ํ•œ๊ตญ์— ์žˆ๋Š” ๋„์‹œ์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 100)๊ณผ 1์ธ๋‹น ๋‚ด์ผ๋กœ ํ‹ฐ์ผ“์˜ ๊ฐ€๊ฒฉ R(1 โ‰ค R โ‰ค 1,000,000)์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” N๊ฐœ์˜ ๋„์‹œ์˜ ์ด๋ฆ„์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋„์‹œ์˜ ์ด๋ฆ„์€ ์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ•ด์‹œ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋จผ์ €, ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์„œ ๋„์‹œ์™€ ๋„์‹œ๊ฐ„ ์–ด๋–ค ๊ฒฝ๋กœ๋ฅผ ๊ฑฐ์น˜๋˜ ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋‹ค๋งŒ, ์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ ๋„์‹œ๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์˜ ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋„์‹œ๋ฅผ ๊ณ ์œ ํ•œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. 1. ๋จผ์ €, ์ฃผ์–ด์ง€๋Š” ๋„์‹œ์˜ ์ค‘๋ณต์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ๋‹ค. ์ค‘๋ณต์„ ์ œ๊ฑฐ..

  • [JAVA] ๋ฐฑ์ค€ 2637๋ฒˆ ใ€G2.์žฅ๋‚œ๊ฐ ์กฐ๋ฆฝใ€‘

    ๋ฌธ์ œ 2637๋ฒˆ: ์žฅ๋‚œ๊ฐ ์กฐ๋ฆฝ ์ฒซ์งธ ์ค„์—๋Š” ์ž์—ฐ์ˆ˜ N(3 โ‰ค N โ‰ค 100)์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, 1๋ถ€ํ„ฐ N-1๊นŒ์ง€๋Š” ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์ด๋‚˜ ์ค‘๊ฐ„ ๋ถ€ํ’ˆ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , N์€ ์™„์ œํ’ˆ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ์ž์—ฐ์ˆ˜ M(3 โ‰ค M โ‰ค 100)์ด ์ฃผ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ์œ„์ƒ์ •๋ ฌ์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ผ๋‹จ ๋ถ€ํ’ˆ์˜ ์กฐ๋ฆฝ ์ˆœ์„œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์œ„์ƒ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํŒŒ์•…ํ–ˆ๋‹ค. ๊ทผ๋ฐ, ์›ํ•˜๋Š” ์ถœ๋ ฅ์€ ์ตœ์ข… ์žฅ๋‚œ๊ฐ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด์•ผํ–ˆ๋‹ค. ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์€ ์กฐํ•ฉ๋˜์–ด ๋งŒ๋“ค์–ด์ง„ ๋ถ€ํ’ˆ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ํŠน์ • ๋ถ€ํ’ˆ์„ ์กฐ๋ฆฝํ• ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์กฐ๋ฆฝ ๋ถ€ํ’ˆ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋ถ€ํ’ˆ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ณ„์† ๋„˜๊ฒจ์ฃผ์–ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์ผ๋‹จ, indegree ๊ฐ’์ด 0..

  • [JAVA] ๋ฐฑ์ค€ 21276๋ฒˆ ใ€G2.๊ณ„๋ณด ๋ณต์›๊ฐ€ ํ˜ธ์„ใ€‘

    ๋ฌธ์ œ 21276๋ฒˆ: ๊ณ„๋ณด ๋ณต์›๊ฐ€ ํ˜ธ์„ ์„ํ˜ธ์ดŒ์—๋Š” N ๋ช…์˜ ์‚ฌ๋žŒ์ด ์‚ด๊ณ  ์žˆ๋‹ค. ๊ต‰์žฅํžˆ ํ™œ๋ฐœํ•œ ์„ฑ๊ฒฉ์ธ ์„ํ˜ธ์ดŒ ์‚ฌ๋žŒ๋“ค์€ ์˜† ์ง‘ ์ƒ๋„ ์•„๋ฒ„๋‹˜, ๋’ท์ง‘ ํ•˜์€ ํ• ๋จธ๋‹˜ , ๊ฐ• ๊ฑด๋„ˆ ์œ ๋ฆฌ ์–ด๋จธ๋‹˜ ๋“ฑ ๋ชจ๋‘๊ฐ€ ํ•œ ๊ฐ€์กฑ์ฒ˜๋Ÿผ ์‚ด์•„๊ฐ€๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์–ด๋Š ๋‚  www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ์œ„์ƒ ์ •๋ ฌ๊ณผ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ํ™œ์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ด ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํฌ์ธํŠธ๋Š” ์ง๊ณ„ ์ž์†์ž„์„ ์–ด๋–ป๊ฒŒ ํŒŒ์•…ํ•˜๋Š”๊ฐ€์˜€๋‹ค. haeun doha doha minji haeun minji ์œ„์™€ ๊ฐ™์ด ๊ด€๊ณ„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ํ•˜์€์€ ๋„ํ•˜์™€ ๋ฏผ์ง€์˜ ์ž์†์ด๊ณ  ๋„ํ•˜๋Š” ๋ฏผ์ง€์˜ ์ž์†์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜๋ฅผ ๋ณด๋ฉด ๋ฏผ์ง€ : 0 ๋„ํ•˜ : 1 ํ•˜์€ : 2 ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์œ„์ƒ ์ •๋ ฌ์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋ฉด ๋ฏผ์ง€์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋ฏผ์ง€์™€ ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ..

  • [JAVA] ๋ฐฑ์ค€ 1967๋ฒˆ ใ€G4.ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ใ€‘

    ๋ฌธ์ œ 1967๋ฒˆ: ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ n(1 โ‰ค n โ‰ค 10,000)์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n-1๊ฐœ์˜ ์ค„์— ๊ฐ ๊ฐ„์„ ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋“ค์–ด์˜จ๋‹ค. ๊ฐ„์„ ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์„ธ ๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ •์ˆ˜๋Š” ๊ฐ„์„ ์ด ์—ฐ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ dfs๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ์—์„œ ์นœ์ ˆํ•˜๊ฒŒ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๋ช…์‹œํ•ด์„œ ์•Œ๋ ค์ค˜์„œ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋งŽ์ด ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทผ๋ฐ, ์ด ๋ฌธ์ œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ํŠน์ •ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ๋ณด๋‹ค๋Š” ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ์„ ๊ฐ€์ •ํ•ด์„œ ํ‘ธ๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•˜๋‹ค. ์˜ˆ์‹œ์—์„œ ๋‚˜์˜จ ๊ทธ๋ฆผ์€ ์œ„์™€ ๊ฐ™์€๋ฐ ์‚ฌ์‹ค ์œ„ ๊ทธ๋ฆผ์€ 9 ๋ฅผ ์ตœ์ƒ๋‹จ ๋…ธ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ทธ๋ฆฌ๋ฉด ์œ„์™€ ๊ฐ™์ด ๊ทธ๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  9 โ†’ 5 โ†’ 3 โ†’ 6 โ†’ 12 ๋…ธ๋“œ..

  • [JAVA] ๋ฐฑ์ค€ 2250๋ฒˆ ใ€G2.ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ๋„ˆ๋น„ใ€‘

    ๋ฌธ์ œ 2250๋ฒˆ: ํŠธ๋ฆฌ์˜ ๋†’์ด์™€ ๋„ˆ๋น„ ์ฒซ์งธ ์ค„์— ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N(1 โ‰ค N โ‰ค 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ์ค„๋งˆ๋‹ค ๋…ธ๋“œ ๋ฒˆํ˜ธ์™€ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ์ค‘์œ„์ˆœํšŒ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ค‘์œ„ ์ˆœํšŒ๋Š” ์œ„์™€ ๊ฐ™์ด ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠธ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ๊ฐ ๋…ธ๋“œ์˜ ์—ด ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์˜ ๊นŠ์ด๋ฅผ ์ฒดํฌํ•ด๋‚˜๊ฐ€๋ฉด์„œ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ํ•˜๊ณ , ๊ฐ ๊นŠ์ด์— ํ•ด๋‹นํ•˜๋Š” ์—ด ๊ฐ’์˜ ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์„ ๊ธฐ๋กํ•ด๋‘๋ฉด ๋œ๋‹ค. public class Main { static Node[] tree; static Map info = new HashMap(); static..

  • [JAVA] ๋ฐฑ์ค€ 20955๋ฒˆ ใ€G4.๋ฏผ์„œ์˜ ์‘๊ธ‰ ์ˆ˜์ˆ ใ€‘

    ๋ฌธ์ œ 20955๋ฒˆ: ๋ฏผ์„œ์˜ ์‘๊ธ‰ ์ˆ˜์ˆ  ๋ฏผ์„œ๋Š” ๊ฐ•์›๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ์˜ ์‹ ์ž„ ๊ต์ˆ˜์ด๋‹ค. ๊ทธ๋…€๊ฐ€ ์ €์ˆ ํ•œ ํšจ์œจ์ ์ธ ํƒ๋ฐฐ ๋ฐฐ๋‹ฌ์„ ์œ„ํ•œ ์ตœ์  ๊ฒฝ๋กœ ์„ค๊ณ„์— ๊ด€ํ•œ ์—ฐ๊ตฌ ๋…ผ๋ฌธ์€ ์•„์ง๋„ ๋„๋ฆฌ ์ธ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์˜ค๋Š˜๋„ ์—ด์‹ฌํžˆ ๊ฐ•์˜๋ฅผ ํ•˜๋˜ ๋ฏผ์„œ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ํŠธ๋ฆฌ์˜ ํŠน์ง•๊ณผ bfs ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ด ๋ฌธ์ œ๋Š”, ๋ฌด์ž‘์œ„๋กœ ์ฃผ์–ด์ง€๋Š” ๋…ธ๋“œ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํŠธ๋ฆฌ๊ด€๊ณ„๋กœ ํ’€์–ด๊ฐ€์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋จผ์ €, ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1. ์ •์ƒ์ ์ธ ํŠธ๋ฆฌ ํ˜•ํƒœ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์ง‘ํ•ฉ์ธ ๊ฒฝ์šฐ 2. ํŠน์ • ๋…ธ๋“œ ์ง‘ํ•ฉ์ด ์‚ฌ์ดํด์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ 3. 1๋ฒˆ ํ˜น์€ 2๋ฒˆ ๊ฐ™์€ ์ง‘ํ•ฉ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š๊ณ  ๋–จ์–ด์ ธ ์žˆ๋Š”๊ฒฝ์šฐ ๊ทธ๋ž˜์„œ ๋ชจ๋“  ๋‰ด๋Ÿฐ์„ ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํšŸ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ•ด์•ผํ• ๊นŒ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ ๋จผ์ €..

  • [JAVA] ๋ฐฑ์ค€ 22856๋ฒˆ ใ€G4.ํŠธ๋ฆฌ ์ˆœํšŒใ€‘

    ๋ฌธ์ œ 22856๋ฒˆ: ํŠธ๋ฆฌ ์ˆœํšŒ ๋…ธ๋“œ๊ฐ€ $N$๊ฐœ์ธ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ํŠธ๋ฆฌ๋ฅผ ์ค‘์œ„ ์ˆœํšŒ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ˆœํšŒํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฅผ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ผ๊ณ  ํ•˜์ž. ์ˆœํšŒ์˜ ์‹œ์ž‘์€ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์ด๊ณ  ์ˆœํšŒ์˜ ๋์€ ์ค‘์œ„ ์ˆœํšŒํ•  ๋•Œ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์ด๋‹ค. www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ํŠธ๋ฆฌ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ฒ˜์Œ์—๋Š” ์ด ๋ฌธ์ œ์—์„œ ์ •์˜ํ•œ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ๋˜‘๊ฐ™์ด ๊ตฌํ˜„ํ•ด์•ผํ•˜๋‚˜ ๊ณ ๋ฏผํ–ˆ์—ˆ์ง€๋งŒ, ๊ทธ๋Ÿฌ์ง€ ์•Š๊ณ  ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ์˜ ํŠน์ง•์€ ํŠธ๋ฆฌ์—์„œ ์ œ์ผ ์˜ค๋ฅธ์ชฝ ๊ฐ„์„ ์€ ํ•œ๋ฒˆ๋งŒ ์ง€๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž์‹๋งŒ ์ง€๋‚˜๊ฐ€๊ฒŒ๋” ํ•˜๋Š” ์ˆœํšŒ๋ฅผ ์ •์˜ํ•˜์—ฌ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ–ˆ๊ณ  ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋Š” ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ -1 ์ž„์„ ์ด์šฉํ•˜์—ฌ ํŽธ๋„ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  (์ „์ฒด ๋…ธ๋“œ์˜ ..

  • [JAVA] ๋ฐฑ์ค€ 5214๋ฒˆ ใ€G2.ํ™˜์Šนใ€‘

    ๋ฌธ์ œ 5214๋ฒˆ: ํ™˜์Šน ์ฒซ์งธ ์ค„์— ์—ญ์˜ ์ˆ˜ N๊ณผ ํ•œ ํ•˜์ดํผํŠœ๋ธŒ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญ์˜ ๊ฐœ์ˆ˜ K, ํ•˜์ดํผํŠœ๋ธŒ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 100,000, 1 โ‰ค K, M โ‰ค 1000) ๋‹ค์Œ M๊ฐœ ์ค„์—๋Š” ํ•˜์ดํผํŠœ๋ธŒ์˜ ์ •๋ณด๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด www.acmicpc.net ํ’€์ด 1๏ธโƒฃ bfs์™€ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ์ฐธ๊ณ ํ•œ Idea ์—ญ์˜ ์ˆ˜ N์ด ์ตœ๋Œ€ 100000 ์ด๊ณ  ํ•˜์ดํผ ํŠœ๋ธŒ์™€ ํ•˜์ดํผ ํŠœ๋ธŒ๊ฐ€ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญ์˜ ๊ฐœ์ˆ˜ K ์™€ M์ด ์ตœ๋Œ€ 1000 ์ด๋ผ์„œ ์ผ๋ฐ˜์ ์ธ ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘ธ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋ง๋„์•ˆ๋˜๊ฒŒ ์ปค์ ธ์„œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋‹ค. ๊ณ„์† ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์•„์ด๋””์–ด๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋‹ค. ํ•˜์ดํผ ํŠœ๋ธŒ๋ฅผ ์ผ์ข…์˜ ์—ญ์œผ๋กœ์„œ ์ƒ๊ฐ์„ ํ•˜๊ณ  ๋…ธ๋“œ๋กœ์„œ ์ถ”๊ฐ€ํ•˜๋Š” ..

  • [JAVA] ๋ฐฑ์ค€ 1043๋ฒˆ ใ€G4.๊ฑฐ์ง“๋งใ€‘

    ๋ฌธ์ œ 1043๋ฒˆ: ๊ฑฐ์ง“๋ง ์ง€๋ฏผ์ด๋Š” ํŒŒํ‹ฐ์— ๊ฐ€์„œ ์ด์•ผ๊ธฐ ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ํŒŒํ‹ฐ์— ๊ฐˆ ๋•Œ๋งˆ๋‹ค, ์ง€๋ฏผ์ด๋Š” ์ง€๋ฏผ์ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ•œ๋‹ค. ์ง€๋ฏผ์ด๋Š” ๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ๋งํ•  ๋•Œ, ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ง„์‹ค๋กœ ๋งํ•˜๊ฑฐ๋‚˜ ์—„์ฒญ๋‚˜๊ฒŒ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ด ๋ฌธ์ œ๋Š” ํŒŒํ‹ฐ๋ณ„๋กœ ๋ฐ”๋กœ ์ฒดํฌ๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ด๊ณ , ๋ชจ๋“  ํŒŒํ‹ฐ์˜ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ์— ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์˜ˆ์ œ ์ฒ˜๋Ÿผ 4 5 1 1 1 1 1 2 1 3 1 4 2 4 1 ์œ„์™€ ๊ฐ™์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, 4๋ฒˆ์งธ ํŒŒํ‹ฐ์ธ 1 4 ์—์„œ๋Š” 4๋ฒˆ์ด ์ง„์‹ค์„ ๋ชจ๋ฅผ๊ฒƒ ๊ฐ™์ง€๋งŒ 5๋ฒˆ์งธ ํŒŒํ‹ฐ์—์„œ ์ง„์‹ค์„ ์•„๋Š” 1๋ฒˆ์ด 4๋ฒˆ์—๊ฒŒ ์•Œ๋ ค ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์ˆœ์ฐจ์ ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์—†๋‹ค. ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ์ „๋žต์€ ์ง€๋ฏผ์ด..

  • [JAVA] ๋ฐฑ์ค€ 2617๋ฒˆ ใ€G4.๊ตฌ์Šฌ ์ฐพ๊ธฐใ€‘

    ๋ฌธ์ œ 2617๋ฒˆ: ๊ตฌ์Šฌ ์ฐพ๊ธฐ ๋ชจ์–‘์€ ๊ฐ™์œผ๋‚˜, ๋ฌด๊ฒŒ๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ N๊ฐœ์˜ ๊ตฌ์Šฌ์ด ์žˆ๋‹ค. N์€ ํ™€์ˆ˜์ด๋ฉฐ, ๊ตฌ์Šฌ์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ 1,2,...,N์œผ๋กœ ๋ถ™์–ด ์žˆ๋‹ค. ์ด ๊ตฌ์Šฌ ์ค‘์—์„œ ๋ฌด๊ฒŒ๊ฐ€ ์ „์ฒด์˜ ์ค‘๊ฐ„์ธ (๋ฌด๊ฒŒ ์ˆœ์„œ๋กœ (N+1)/2๋ฒˆ์งธ) ๊ตฌ์Šฌ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ bfs์™€ Marble ํด๋ž˜์Šค ์ •์˜๋ฅผ ํ†ตํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ๋ฌธ์ œ์— ๊ฑฐ์˜ ์ฃผ์–ด์ง€๋‹ค ์‹ถ์ด ๋‚˜์™€์žˆ์—ˆ๋‹ค. ๊ตฌ์Šฌ์ด ์ด 5๊ฐœ์ผ๋•Œ๋Š” ํŠน์ • ๊ตฌ์Šฌ๋ณด๋‹ค ๊ฐ€๋ฒผ์šด๊ฒŒ 3๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ ์ค‘๊ฐ„์ด ๋  ์ˆ˜ ์—†๊ณ  ๋ฌด๊ฑฐ์šด๊ฒŒ 3๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ๋Š” ์ค‘๊ฐ„์ด ๋  ์ˆ˜ ์—†๋‹ค. ์ฒ˜์Œ์—๋Š” N์ด ์ง์ˆ˜๋กœ๋„ ์ฃผ์–ด์ง€๋‚˜ ์‹ถ์–ด์„œ, ์ง์ˆ˜์ธ ๊ฒฝ์šฐ์—๋Š” ์•ฝ๊ฐ„ ๊ธฐ์ค€์ด ๋‹ฌ๋ž์ง€๋งŒ ํ™€์ˆ˜๋กœ๋งŒ ์ฃผ์–ด์ง„๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ํŠน์ • ๊ตฌ์Šฌ์ด, ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€๋ฒผ์šด ๊ตฌ์Šฌ์ด (N+1)/2 ๊ฐœ..

  • [JAVA] ๋ฐฑ์ค€ 1707๋ฒˆ ใ€G4.์ด๋ถ„ ๊ทธ๋ž˜ํ”„ใ€‘

    ๋ฌธ์ œ 1707๋ฒˆ: ์ด๋ถ„ ๊ทธ๋ž˜ํ”„ ์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ •์ ์˜ ๊ฐœ์ˆ˜ V์™€ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ E๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ์ด๋ถ„ ๊ทธ๋ž˜ํ”„์˜ ์ •์˜์™€ bfs ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ์˜ˆ์ „์— ํ’€์–ด๋ดค๋˜ ๋ฌธ์ œ์—ฌ์„œ, ์›๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด์ „์—๋„, ํ•œ์ฐธ์„ ๊ณ ๋ฏผํ–ˆ์—ˆ๋‹ค๊ฐ€ ์„œ์นญํ•ด์„œ ํ’€์—ˆ์—ˆ๋Š”๋ฐ, ์ด๋ถ„ ๊ทธ๋ž˜ํ”„๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋‚˜์˜ค๋ฉด ์ด ์ •์˜๋ฅผ ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค. ์ด๋ถ„ ๊ทธ๋ž˜ํ”„์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ธ, ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„๋ฅผ 2๊ฐœ์˜ ์ƒ‰๊น”๋กœ ์น ํ–ˆ์„ ๋•Œ, ์ธ์ ‘ํ•˜๋Š” ๋…ธ๋“œ๋ผ๋ฆฌ ์ƒ‰์ด ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ์ƒ‰์น ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ, ์ด๋ถ„ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์œ„์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š..

  • [JAVA] ๋ฐฑ์ค€ 2660๋ฒˆ ใ€G5.ํšŒ์žฅ๋ฝ‘๊ธฐใ€‘

    ๋ฌธ์ œ 2660๋ฒˆ: ํšŒ์žฅ๋ฝ‘๊ธฐ ์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์—๋Š” ํšŒ์›์˜ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๋‹จ, ํšŒ์›์˜ ์ˆ˜๋Š” 50๋ช…์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. ๋‘˜์งธ ์ค„ ์ดํ›„๋กœ๋Š” ํ•œ ์ค„์— ๋‘ ๊ฐœ์˜ ํšŒ์›๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ ๋‘ ํšŒ์›์ด ์„œ๋กœ ์นœ๊ตฌ์ž„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ํšŒ์›๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ฒ˜์Œ์— ๋ฌธ์ œ๊ฐ€ '์–ด๋Š ํšŒ์›์ด ๋‹ค๋ฅธ ๋ชจ๋“  ํšŒ์›๊ณผ ์นœ๊ตฌ์ด๋ฉด, ์ด ํšŒ์›์˜ ์ ์ˆ˜๋Š” 1์ ์ด๋‹ค. ์–ด๋Š ํšŒ์›์˜ ์ ์ˆ˜๊ฐ€ 2์ ์ด๋ฉด, ๋‹ค๋ฅธ ๋ชจ๋“  ํšŒ์›์ด ์นœ๊ตฌ์ด๊ฑฐ๋‚˜ ์นœ๊ตฌ์˜ ์นœ๊ตฌ์ž„์„ ๋งํ•œ๋‹ค. ๋˜ํ•œ ์–ด๋Š ํšŒ์›์˜ ์ ์ˆ˜๊ฐ€ 3์ ์ด๋ฉด, ๋‹ค๋ฅธ ๋ชจ๋“  ํšŒ์›์ด ์นœ๊ตฌ์ด๊ฑฐ๋‚˜, ์นœ๊ตฌ์˜ ์นœ๊ตฌ์ด๊ฑฐ๋‚˜, ์นœ๊ตฌ์˜ ์นœ๊ตฌ์˜ ์นœ๊ตฌ์ž„์„ ๋งํ•œ๋‹ค.' ๋ผ๊ณ  ๋‚˜์™€์žˆ์–ด์„œ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ์—ˆ๋‹ค. ๊ทผ๋ฐ, ์ด ๋ฌธ์ œ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•ด๋ณด๋‹ˆ 'ํŠน์ • ํšŒ์›์ด ์žˆ์„ ๋•Œ ๊ฐ€์žฅ ์‚ฌ์ด๊ฐ€ ..

  • [Java] 909. Snakes and Ladders

    ๋ฌธ์ œ ํŒŒ์•… Boustrophedon ์Šคํƒ€์ผ์˜ n*n ๋ณด๋“œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ( (n-1,0) ์ขŒํ‘œ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. ) ์ฃผ์‚ฌ์œ„์— ๋”ฐ๋ผ ์ตœ๋Œ€ 6์นธ์„ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ๋ฑ€์ด๋‚˜ ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฑ€์ด๋‚˜ ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ์ด์šฉํ•ด์•ผํ•œ๋‹ค. n^2 ์นธ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ, ๊ฒŒ์ž„์€ ๋๋‚œ๋‹ค. ๋ณด๋“œ ๊ฐ’์ด -1์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฑ€์ด๋‚˜ ์‚ฌ๋‹ค๋ฆฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋ฑ€์ด๋‚˜ ์‚ฌ๋‹ค๋ฆฌ์ธ ๊ฒฝ์šฐ ๋„์ฐฉํ•˜๋Š” ๋ณด๋“œ ๊ฐ’์ด ๊ธฐ๋ก๋˜์–ด์žˆ๋‹ค. ๋ฑ€์ด๋‚˜ ์‚ฌ๋‹ค๋ฆฌ๋Š” 1 ๋˜๋Š” n^2 ์นธ์— ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์—ฐ์†์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค. n^2์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ 1์ฐจ์› ๋งต๊ณผ bfs ๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ• ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋จผ์ €, ๋ณด๋“œํŒ ์ˆœ์„œ๊ฐ€ ํ—ท๊ฐˆ๋ ค์„œ ์ด๋ฅผ 1์ฐจ์› ๋งต์œผ๋กœ ๋ฐ”๊ฟ”์„œ ํ•ด๊ฒฐํ•˜๋ฉด ๊ฐ„๋‹จํ• ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ œ์ผ ์•„..

  • [Java] 133. Clone Graph

    ๋ฌธ์ œ ํŒŒ์•… ๋…ธ๋“œ๋กœ ์—ฐ๊ฒฐ๋œ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ํ•ด๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ๊นŠ์€ ๋ณต์‚ฌํ•ด์„œ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ bfs ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด์ฉƒ๋“ , ๋ชจ๋“  ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•ด๋ณด๊ณ  ํ•ด๋‹น ๊ฐ’์„ ๊ฐ–๋Š” ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค. ๋ฌธ์ œ์—์„œ val ๊ฐ’์€ unique ํ•˜๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ map์— val ์„ ํ‚ค๊ฐ’์œผ๋กœ ํ•ด์„œ ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•ด์ค€๋‹ค. ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ด์›ƒ ๋…ธ๋“œ๋“ค์— ๋ฐฉ๋ฌธํ•ด๋ณด๊ณ , map์— ๋“ค์–ด์žˆ์ง€ ์•Š์€(์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€) ๋…ธ๋“œ๋“ค์€ ํ์— ์ง‘์–ด๋„ฃ์–ด ์ด์›ƒ ๋…ธ๋“œ๋“ค์— ๋ฐฉ๋ฌธํ•˜๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋งŒ์•ฝ map์— ๋“ค์–ด์žˆ๋Š”(๋ฐฉ๋ฌธํ–ˆ๋˜) ๋…ธ๋“œ๋ผ๋ฉด ํ์— ๋„ฃ์ง€ ์•Š๊ณ  ์ด์›ƒ์œผ๋กœ์„œ ์ถ”๊ฐ€๋งŒ ํ•ด์ค€๋‹ค. class Solution { Map map = new HashMap(); Queue q = new LinkedList(); pu..

  • [Java] 373. Find K Pairs with Smallest Sums

    ๋ฌธ์ œ ํŒŒ์•… ๋น„ ๋‚ด๋ฆผ์ฐจ์ˆœ์ธ ๋‘ ์ •์ˆ˜ ๋ฐฐ์—ด nums1 ๊ณผ nums2 ๊ทธ๋ฆฌ๊ณ  k๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. k๊ฐœ์˜ ๊ฐ€์žฅ ํ•ฉ์ด ์ž‘์€ pair ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ PriortyQueue ์™€ ์ผ์ข…์˜ ๊ทธ๋ฆฌ๋”” ๋ฒ•์„ ํ™œ์šฉ ๐Ÿ’ก ์ฐธ๊ณ ํ•œ Idea ์ด๋ฒˆ ๋ฌธ์ œ๋Š”, ์•„๋ฌด๋ฆฌ ์—ด์‹ฌํžˆ ๋– ์˜ฌ๋ ค๋ด๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ & ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ๋•Œ๋ฌธ์— ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์•„์ด๋””์–ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋จผ์ €, ๋‘ ์›์†Œ์˜ ํ•ฉ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ค€๋น„ํ•œ๋‹ค. nums1 ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0 ์œผ๋กœ ๊ณ ์ •ํ•œ ์ฑ„, nums2 ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ํ•ฉ์„ ๊ตฌํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„ ํ์— ์ž…๋ ฅํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์—๋Š” [ nums1์˜ ๊ฐ’, nums2 ์˜ ๊ฐ’, nums1์˜ ์ธ๋ฑ์Šค, nums1์˜ ๊ฐ’ +nums2์˜ ๊ฐ’ ] ์œผ๋กœ ์ž…๋ ฅํ•ด์ค€๋‹ค. ..

  • [Java] 215. Kth Largest Element in an Array

    ๋ฌธ์ œ ํŒŒ์•… ์ •์ˆ˜ ๋ฐฐ์—ด nums ๊ฐ€ ์ฃผ์–ด์ง€๊ณ  k๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. k๋ฒˆ์งธ๋กœ ํฐ ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. ํ’€์ด 1๏ธโƒฃ PriorityQueue๋ฅผ ํ™œ์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ํ์— ์›์†Œ๋“ค์„ ๋„ฃ๊ณ  k๋ฒˆ์งธ์˜ ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. import java.util.*; class Solution { public int findKthLargest(int[] nums, int k) { PriorityQueue pq = new PriorityQueue((a, b) -> b - a); for (int num : nums) { pq.offer(num); } int ans = 0; while (k-- > 0) { ans = pq.poll(); } return ans; } } ๊ฒฐ๊ณผ ๐Ÿ“– ํšŒ๊ณ  ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ์ œ..

  • [Java] 212. Word Search II

    ๋ฌธ์ œ ํŒŒ์•… ๋ฌธ์ž๊ฐ€ ์ฑ„์›Œ์ ธ์žˆ๋Š” m*n ํฌ๊ธฐ์˜ ๋ณด๋“œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ๋ฐฑํŠธ๋ž˜ํ‚น๊ณผ Set ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๊ตฌํ•ด๋ณธ๋‹ค. ( ์ตœ๋Œ€ ๊ธธ์ด 10์œผ๋กœ) ๊ตฌํ•œ ๋ฌธ์ž์—ด์„ Set ์— ๋„ฃ๊ณ , ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์ด Set์— ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. import java.util.*; class Solution { int R; int C; boolean[][] checked; StringBuilder str = new StringBuilder(); int[] dr = {1, -1, 0, 0}; int[] dc = {0, 0, 1, -1}; char[][] board; Set set = new HashSet(); ..

  • [Java] 211. Design Add and Search Words Data Structure

    ๋ฌธ์ œ ํŒŒ์•… ํŠน์ • ๋ฌธ์ž์—ด์„ ๋ณด๊ด€ํ•˜๊ณ  search ํ–ˆ์„ ๋•Œ, ์กด์žฌํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค. . ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ๋Š” ์–ด๋– ํ•œ ๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๋„ ํ—ˆ์šฉ๋œ๋‹ค. ํ’€์ด 1๏ธโƒฃ Trie ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea Trie ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ ‘๋‘์–ด๋‚˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, Trie ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ํŠนํžˆ, ์ด ๋ฌธ์ œ์—์„œ๋Š” search ๊ณผ์ •์—์„œ . ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ํ•ด๋‹น ๋…ธ๋“œ๊ฐ€ ๊ฐ–๋Š” ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ๋“ค์„ ํƒ์ƒ‰ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ•˜์˜€๋‹ค. import java.util.*; class WordDictionary { static class Node { Map children; boolean isEndOfWord; public Node() { t..

  • [Java] 208. Implement Trie (Prefix Tree)

    ๋ฌธ์ œ ํŒŒ์•… Trie ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ํŠธ๋ผ์ด๋Š” ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์™œ ํŠธ๋ผ์ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ? ๐Ÿšจ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ๋‚˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด๋กœ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ๋˜ํ•œ, ํ•ด์‹œ ์ฝ”๋“œ๋กœ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค. ํ’€์ด 1๏ธโƒฃ Node ํด๋ž˜์Šค ์ •์˜ class Trie { Node root; static class Node { Map children; boolean isEndOfWord; public Node() { this.children = new HashMap(); this.isEndOfWord = false; } } public Trie() { this.root = new Node(); } } Trie..

  • [JAVA] ๋ฐฑ์ค€ 1781๋ฒˆ ใ€G2.์ปต๋ผ๋ฉดใ€‘

    ๋ฌธ์ œ 1781๋ฒˆ: ์ปต๋ผ๋ฉด ์ƒ์šฑ ์กฐ๊ต๋Š” ๋™ํ˜ธ์—๊ฒŒ N๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ์ฃผ๊ณ ์„œ, ๊ฐ๊ฐ์˜ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์„ ๋•Œ ์ปต๋ผ๋ฉด์„ ๋ช‡ ๊ฐœ ์ค„ ๊ฒƒ์ธ์ง€ ์ œ์‹œ ํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ๋™ํ˜ธ์˜ ์ฐŒ๋ฅผ๋“ฏํ•œ ์ž์‹ ๊ฐ์— ์†Œ์‹ฌํ•œ ์ƒ์šฑ ์กฐ๊ต๋Š” ๊ฐ๊ฐ์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฐ๋“œ๋ผ www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ์šฐ์„  ์ˆœ์œ„ ํ์™€ ๊ทธ๋ฆฌ๋””๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ปต๋ผ๋ฉด์„ ๋ฐ๋“œ๋ผ์ธ์ด ์งง๊ณ  ์ปต๋ผ๋ฉด์„ ๋งŽ์ด ์ฃผ๋Š” ๋ฌธ์ œ๋ถ€ํ„ฐ ๊ฒฐ์ •ํ•ด์„œ ํ์— ์ง‘์–ด๋„ฃ๋Š”๋‹ค. ์ฆ‰, ํ์˜ ํฌ๊ธฐ = ํ’€๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๋ฌธ์ œ ์ˆ˜ = ๋‚ด๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ดํ›„์— ๋‚˜์˜ค๋Š” ๋ฌธ์ œ๋“ค์ด ๋‚ด ํ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด์„œ ๋‚ด ํ์— ๋“ค์–ด์žˆ๋Š” ์ปต๋ผ๋ฉด๋ณด๋‹ค ๋งŽ์ด ์ค€๋‹ค๋ฉด ๋‚ด ํ์— ๋“ค์–ด์žˆ๋˜ ๊ฐ€์žฅ ์ปต๋ผ๋ฉด์„ ์ ๊ฒŒ ์ฃผ๋Š” ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์˜ˆ์ œ๋กœ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•ด๋ณด๋ฉด, ๋จผ์ €, ๋ฐ๋“œ๋ผ์ธ์ด ์งง์€ ..

  • [JAVA] ๋ฐฑ์ค€ 1655๋ฒˆ ใ€G2.๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š”ใ€‘

    ๋ฌธ์ œ 1655๋ฒˆ: ๊ฐ€์šด๋ฐ๋ฅผ ๋งํ•ด์š” ์ฒซ์งธ ์ค„์—๋Š” ๋ฐฑ์ค€์ด๊ฐ€ ์™ธ์น˜๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ N์ค„์— ๊ฑธ์ณ์„œ ๋ฐฑ์ค€์ด๊ฐ€ ์™ธ์น˜๋Š” ์ •์ˆ˜๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ •์ˆ˜๋Š” -1 www.acmicpc.net ํ’€์ด 1๏ธโƒฃ ์šฐ์„  ์ˆœ์œ„ ํ ๋‘๊ฐœ๋ฅผ ํ™œ์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์šฐ์„  ์ˆœ์œ„ ํ๋Š” ์ด์ง„ ํž™ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ ฌ์„ ์œ ์ง€ํ•œ ์‚ฝ์ž… ๊ณผ์ •์„ O(logN) ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์šฐ์„  ์ˆœ์œ„ ํ์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ ์—ญ์‹œ, O(logN) ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ์„  ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค. ๊ฐ€์šด๋ฐ ์ˆ˜๋ฅผ ํ•ญ์ƒ ๋งํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์šฐ์„ ์ˆœ์œ„ ํ (l..

  • [Java] 637. Average of Levels in Binary Tree

    ๋ฌธ์ œ ํŒŒ์•… ๊ฐ level(depth)์˜ ๋…ธ๋“œ๋“ค์˜ val ๊ฐ’ ํ‰๊ท ์„ ๊ตฌํ•ด์„œ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ์ด์šฉํ•œ ํ’€์ด (์ „์œ„ ํƒ์ƒ‰) ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ „์œ„ ํƒ์ƒ‰์„ depth๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ํƒ์ƒ‰์„ ํ•œ๋‹ค. ๊ฐ depth์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ, ํ•ด๋‹น depth์˜ ํ•ฉ๊ณผ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” List๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. ํƒ์ƒ‰์ด ๋๋‚˜๊ณ  ๋‚˜์„œ, ํ‰๊ท  ๊ฐ’์„ ๊ตฌํ•ด์„œ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. import java.util.*; class Solution { List list = new ArrayList(); public List averageOfLevels(TreeNode root) { List ans = new ArrayList(); preOrder(root, 0); for (int i = 0; i < list.size()..

  • [Java] 199. Binary Tree Right Side View

    ๋ฌธ์ œ ํŒŒ์•… ์ฃผ์–ด์ง€๋Š” ํŠธ๋ฆฌ๋ฅผ, ์˜ค๋ฅธ์ชฝ์—์„œ ๋ฐ”๋ผ๋ณด์•˜์„ ๋•Œ ๋ณด์ด๋Š” ๋…ธ๋“œ๋“ค์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค. ๋ฌธ์ œ ํ•ด์„ ์‹œ, ์•ฝ๊ฐ„ ํ˜ผ๋™์ด ์žˆ์–ด์„œ ์ฒ˜์Œ์—๋Š” ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋“ค์„ ์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” ์ค„ ์•Œ์•˜๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ, root ๋…ธ๋“œ์˜ right node ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ€ [1] ์ด ๋‚˜์™€์•ผ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์š”๊ตฌํ•˜๋Š” ๋‹ต์€ [1,2] ์˜€๋‹ค. ํ•ด์„์„ ์ฐพ์•„๋ณด๋‹ˆ, ์ด ํŠธ๋ฆฌ๋ฅผ ์˜ค๋ฅธ์ชฝ์—์„œ ๋ฐ”๋ผ๋ดค์„ ๋•Œ ๋ณด์ด๋Š” ๋…ธ๋“œ๋“ค์„ ์ถœ๋ ฅํ•˜๋ผ๋Š” ๋œป์ด์—ˆ๋‹ค. ํ’€์ด 1๏ธโƒฃ ์ „์œ„ ํƒ์ƒ‰์„ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ์ „์œ„ ํƒ์ƒ‰์˜ ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์ด ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์™ผ์ชฝ ํ˜น์€ ์˜ค๋ฅธ์ชฝ ๊ฒฝ๋กœ์˜ ๋์— ๋„๋‹ฌํ•˜๋ฉด ๋ถ€๋ชจ์˜ ๋ฐ˜๋Œ€ํŽธ ๋…ธ๋“œ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ํƒ์ƒ‰ํ•œ๋‹ค. ์œ„ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์„ ํƒ์ƒ‰ํ•ด์•ผํ•˜๋ฏ€๋กœ ๊ฒฝ๋กœ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ..

  • [Java] 230. Kth Smallest Element in a BST

    ๋ฌธ์ œ ํŒŒ์•… k๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค. ํ’€์ด 1๏ธโƒฃ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์ด์šฉํ•œ ํ’€์ด ๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ ์ˆœ์„œ๋กœ ๋…ธ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์›๋ฆฌ๋ฅผ ์ ์šฉํ•˜์—ฌ k๋ฒˆ์งธ ๋…ธ๋“œ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ, ๊ฐ’์„ ์ €์žฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๊ฒ ๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค. class Solution { int ans = 0; int idx = 1; public int kthSmallest(TreeNode root, int k) { inOrder(root, k); return ans; } private void inOrder(TreeNode node, int k) { if (node == null) { return; } inOrder(node.left, k); if (idx == k) { ans =..