전체 글 78

[프로그래머스] K번째 수 – 기초 풀이

이번 글에서는 프로그래머스 Level 1 문제인 K번째 수를 다룬다.이 문제는 단순히 정렬을 하고 특정 위치의 값을 뽑는 문제지만, 나는... “배열을 어떻게 자를까?”, “정렬 후 k번째 원소는 어떻게 뽑을까?” 이 부분에서 막혔다. 이 문제를 너무 간단하게 쓰는 대신, 누가 봐도 단계가 보이는 방식으로 풀었다.스터디에서 내가 설명할 때도, 각 단계를 차근차근 말할 수 있도록 작성했다. 문제 설명배열과 명령어가 주어진다.명령어는 [start, end, k] 형태인데, 의미는 다음과 같다.배열에서 start번째부터 end번째까지 자른다.잘라낸 배열을 정렬한다.정렬된 배열에서 k번째 원소를 뽑는다.모든 명령어에 대해 이 과정을 반복해서 결과를 담아 반환하면 된다.내가 선택한 풀이 전략배열 자르기 – 직접 ..

코딩테스트 2025.09.09

[백준] K번째 수 문제를 위한 2750, 10818 문제 정리

프로그래머스의 K번째 수 문제는 정렬과 배열 조작을 동시에 요구한다. 문제 자체는 어렵지 않지만, 초보자가 바로 접근하기에는 다소 헷갈릴 수 있다. 따라서 이 문제를 풀기 전에 백준의 기초 문제들을 선수로 풀어보는 것이 큰 도움이 된다. 이번 글에서는 10818(최소, 최대)와 2750(수 정렬하기) 문제를 통해 K번째 수에 필요한 기본기를 정리해보겠다. 1. 백준 10818 - 최소, 최대문제 요약정수 N개가 주어졌을 때, 그 중 최소값과 최대값을 구하는 문제다. 학습 포인트배열 입력 받기: N개의 정수를 배열에 저장하는 기본 패턴초기값 설정: min/max를 배열의 첫 원소로 초기화한 뒤, 나머지를 순회하며 갱신조건문으로 값 갱신: 특정 조건(더 크다/더 작다)에 따라 값을 업데이트출력 형식 맞추기:..

코딩테스트 2025.09.09

[기술면접] 스프링 MVC 1편 전체 예상 질문

1. 기본 개념 질문MVC 패턴이란 무엇이고, 왜 필요한가요?Servlet과 WAS(Web Application Server) 의 차이를 설명해주세요.JSP와 타임리프의 차이점은 무엇인가요?정적 리소스, 뷰 템플릿, HTTP API 응답은 각각 언제 사용하나요?@RequestParam, @ModelAttribute, @RequestBody 의 차이를 설명해주세요.2. 내부 동작 원리 질문스프링에서 Front Controller 패턴은 어떻게 구현되나요? (DispatcherServlet)스프링 MVC에서 컨트롤러의 파라미터(HttpServletRequest, @RequestParam, @ModelAttribute 등)는 누가 어떻게 바인딩해주나요?→ 정답: HandlerMethodArgumentResol..

기술면접 2025.08.18

[Spring] 스프링 MVC 1편 완강!!!!!!! - 전체 정리

스프링 MVC 1편 강의는 단순한 기술 학습을 넘어, 웹 애플리케이션이 동작하는 근본 원리를 이해하고 실제로 구현해보는 과정이었다.이번 글에서는 지금까지 학습한 전체 내용을 하나의 흐름으로 정리한다.1. 웹 애플리케이션의 기본 구조웹 서버 vs WAS웹 서버: 정적 리소스 제공 (HTML, CSS, JS)WAS: 서블릿 기반으로 동적 처리서블릿과 JSP서블릿: HTTP 요청과 응답을 직접 다루는 저수준 APIJSP: HTML과 자바 코드를 결합해 뷰를 좀 더 쉽게 렌더링MVC 패턴 등장역할 분리: Controller(요청 처리), Model(데이터), View(화면 렌더링)코드 중복과 유지보수 문제를 구조적으로 해결2. MVC 프레임워크 직접 구현하기Front Controller 패턴여러 컨트롤러를 하나..

Spring 2025.08.18

[Spring] MVC 22편 - 웹 페이지 만들기 (4, 최종 정리)

지난 편까지 우리는 상품 관리 웹 애플리케이션을 스프링 MVC와 타임리프를 사용해 직접 만들어 보았다.이번 편에서는 지금까지 구현한 기능을 전체적으로 정리하고, 타임리프 문법 요약 시트까지 정리해본다.1. 전체 기능 흐름요구사항상품 목록상품 상세상품 등록상품 수정구현 순서도메인 개발: Item, ItemRepository컨트롤러 작성: BasicItemController상품 목록 조회상품 상세 조회상품 등록 (폼, 처리)상품 수정 (폼, 처리)뷰 템플릿 작성: Thymeleaf 기반 HTML (목록, 상세, 등록, 수정)중복 등록 문제 해결: PRG(Post/Redirect/Get) 패턴상태 메시지 처리: RedirectAttributes 사용2. 주요 코드 구조BasicItemController@Con..

Spring 2025.08.18

[Spring] MVC 21편 - 웹 페이지 만들기 (3)

지난 편에서는 상품 목록, 상세, 등록까지 구현했다.이번에는 상품 수정 기능을 추가하고, 등록 후 새로고침 시 발생하는 문제를 어떻게 해결하는지도 살펴본다.1. 상품 수정 폼컨트롤러@GetMapping("/{itemId}/edit")public String editForm(@PathVariable Long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/editForm";} @PathVariable로 전달된 상품 ID를 이용해 상품을 조회모델에 담아 editForm.html에 전달뷰 템플릿 (editForm.html) ..

Spring 2025.08.18

[Spring] MVC 20편 - 웹 페이지 만들기 (2)

지난 편에서는 프로젝트 기본 세팅과 상품 도메인, 저장소까지 만들었다.이번에는 본격적으로 타임리프 뷰 템플릿을 사용해서 웹 페이지를 동적으로 구현해보자.1. 상품 목록 - 타임리프 적용컨트롤러@Controller@RequestMapping("/basic/items")@RequiredArgsConstructorpublic class BasicItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { List items = itemRepository.findAll(); model.addAttribute("items", items); ..

Spring 2025.08.18

[Spring] MVC 19편 - 웹 페이지 만들기 (1)

이번 편부터는 실제로 상품 관리 웹 애플리케이션을 만들어보면서 스프링 MVC와 타임리프를 활용하는 과정을 다룬다.앞에서 배운 MVC의 핵심 개념들을 이제는 실무 예제에 적용해보는 단계라고 보면 된다.1. 프로젝트 생성먼저 start.spring.io를 이용해 프로젝트를 생성한다.Project: Gradle ProjectLanguage: JavaSpring Boot: 3.x Group: helloArtifact: item-servicePackage name: hello.itemservicePackaging: JarJava: 17Dependencies: Spring Web, Thymeleaf, Lombok애플리케이션을 실행하면 http://localhost:8080 에서 Whitelabel Error Pag..

Spring 2025.08.18

[Spring] MVC 18편 - HTTP 응답과 메시지 컨버터

이번 편에서는 스프링 MVC에서 응답을 처리하는 다양한 방식과 핵심 요소인 HttpMessageConverter, 그리고 이를 활용하는 ArgumentResolver / ReturnValueHandler의 동작 원리를 정리한다.이전까지는 요청(Request)을 중심으로 살펴봤다면, 이제는 응답(Response)에 집중해보자.1. 요구사항클라이언트에 응답을 내려줄 때 선택지는 다양하다.정적 리소스(html, css, js)뷰 템플릿(Thymeleaf, JSP 등)HTTP API(JSON 등 데이터 포맷)각각의 응답 방식에 따라 스프링 MVC가 어떤 경로로 동작하는지 이해하는 것이 필요하다.2. 문제점단순히 문자열을 반환하면 뷰를 렌더링할지, HTTP 바디에 데이터를 넣을지 헷갈릴 수 있다.JSON, XML..

Spring 2025.08.18

[Spring] MVC 17편 - Spring MVC 어노테이션 동작 요약 시트

1. 컨트롤러 유형어노테이션설명반환 처리 방식@Controller뷰 렌더링 컨트롤러반환값 String → View 이름@RestControllerAPI 전용 컨트롤러@ResponseBody 포함, 반환값 → HTTP Body2. 매핑 관련 어노테이션어노테이션용도주요 속성특징/주의사항@RequestMappingURL + HTTP 메서드 매핑value, method, params, headers, consumes, produces가장 기본, 다중 속성 지원@GetMapping 등HTTP 메서드별 축약형value, params, headers 등내부적으로 @RequestMapping 사용@PathVariable경로 변수 바인딩value, required이름 생략 시 -parameters 옵션 필요(3.2+) ..

Spring 2025.08.14