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 =..