[백준] 1285. 동전 뒤집기 (비트마스킹/Java)
·
코딩 테스트/Baekjoon
[백준] 1285. 동전 뒤집기 📌 풀이 과정동전의 상태가 앞(H), 뒤(T) 2가지 뿐이기 때문에 각 위치를 2진수로 표현이 가능하다.H = 0, T = 1로 설정하고 문제를 풀었다.그리고 각 행과 열은 뒤집느냐, 뒤집지 않느냐 두가지 경우로 나눠지기에행을 먼저 완전탐색한 이후에, 열 기준으로 T의 갯수를 카운트해 뒤집을지 말지 판단을 하면 된다. 1. 동전 상태를 비트로 저장N개의 행을 정수 배열 coin[]에 저장해서 각 행을 하나의 N비트 정수로 표현했다.예를 들어 `HTT(앞면, 뒷면, 뒷면)`인 경우H → 0T → 01T → 011 (2진수) = 3 (10진수) 2. 행을 뒤집는 연산비트를 사용하기 때문에 행을 뒤집는다는 것은 각 비트를 반전시키는 것과 같기 때문에  NOT 연산 `~`을 사..
[백준] 12869. 뮤탈리스크 (DP/Java)
·
코딩 테스트/Baekjoon
[백준] 12869. 뮤탈리스크 📌 풀이 과정처음엔 완전 탐색으로 풀 수 있겠지? 하는 생각에 풀었다가 시간 초과가 떴다.알고리즘 유형을 확인해보니.... DP를 활용한 BFS 로직을 작성해야 함을 깨달았다...더보기기존 완탐으로 작성한 코드는 시간 초과!!!!제출 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;public class Main{ static int N, min; static int[] SCV; static Li..
[Spring] Bean Validation 활용한 효율적인 검증 구현하기
·
Study/Spring
이전 글처럼 BindingResult를 사용해 비즈니스 로직 전에 매번 검증 코드를 작성하는 것은 번거로운 작업이다.이런 반복적인 검증 로직을 표준화하여 간편하게 사용할 수 있도록 해주는 것이 바로 Bean Validation이다.Bean Validation을 활용하면 단순한 어노테이션만으로도 손쉽게 검증 로직을 구현할 수 있다. 📌 Bean Validation 이란?먼저 Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다.쉽게 이야기해서 검증 어노테이션과 여러 인터페이스의 모음이라는 의미이다.JPA가 표준 기술이고 그 구현체로 하이버네이트가 있는 것처럼, Bean Validation도 구현체가 있다. 일반적으로 사용하는 Bean..
[싸피셜이 알려드림: 기술편] Filter와 Interceptor의 차이
·
SSAFY
Spring 프레임워크를 공부하다 보면 자주 마주치게 되는 Filter와 Interceptor!둘 다 웹 요청을 처리하는 공통 관심사를 다루는 방법이지만, 실제로는 꽤 다른 특징과 사용 목적을 가지고 있습니다.Spring은 개발자들의 효율적인 코드 작성을 위해 다양한 기능들을 제공하고 있는데요, 특히 여러 곳에서 반복되는 공통 작업들을 쉽게 처리할 수 있도록 도와주어 불필요한 코드 중복을 제거할 수 있습니다.오늘은 이러한 Spring의 강력한 기능 중 Filter와 Interceptor의 차이점과 각각의 활용 방법에 대해 자세히 알아보도록 하겠습니다😎 📌 필터(Filter)란? DispatcherServlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해부가 작업을 처리할 수 있는 ..
[Spring] BindingResult 활용한 Validation 검증 동작 방식
·
Study/Spring
🔔 검증이 왜 필요할까?서비스를 개발할 때, 검증은 매우 중요한 역할을 한다.검증을 소홀히 하면 시스템의 안정성을 위협하고, 치명적인 오류를 발생시킬 수 있다.사용자 정보를 입력받는 가장 기본적인 단계인 회원가입을 예로 들어보자.이때 입력 값이 유효하지 않다면, 사용자 경험이 저하되거나 시스템에 예상치 못한 오류가 발생할 수 있다이메일 형식이 잘못되었거나 중복된 이메일을 사용할 경우비밀번호가 너무 짧거나 약할 경우나이가 입력되지 않았거나 유효하지 않은 값일 경우Spring Boot는 이러한 검증 작업을 효율적으로 수행할 수 있는 다양한 도구를 제공하는데, 그중 하나가 `BindingResult`이다.  📌 BindingResult으로 검증하기BindingResult는 스프링이 제공하는 검증 오류를 보..
[Spring] @Controller와 @RestController의 차이점
·
Study/Spring
Spring에서 컨트롤러를 구현할 때 `@Controller`와 `@RestController` 두 가지 어노테이션을 사용할 수 있다.이 두 가지 방식의 차이점과 사용법에 대해 자세히 알아보자! 📌 @Controller`@Controller`는 전통적인 Spring MVC 컨트롤러로, 주로 View를 반환하기 위해 사용된다.1. View 반환하기@Controllerpublic class ViewController { @GetMapping("/hello") public String hello(Model model) { model.addAttribute("message", "안녕하세요"); return "hello"; // hello.jsp나 hello.html 같은 뷰..
[백준] 1520. 내리막길 (DP/Java)
·
코딩 테스트/Baekjoon
[백준] 1520. 내리막길 📌 풀이 과정DFS로 4방향 + 내리막길로만 탐색하고, 백트래킹으로 풀었지만네 어김없이 시간초과가 뜬다.시간복잡도를 고려하는 방법에 대해서 공부할 필요가 있음을 느낀다..DFS로 모든 가능한 경로를 탐색한다.But, 이미 계산한 위치의 경로 수를 재사용하여 중복 계산을 방지해야 한다.`dp[x][y]` = 현재 위치(x, y)에서 도착지점(M-1, N-1)까지의 경로의 수`dfs(x, y)` = 현재 위치(x, y)에서 출발하여 도착점까지 가는 경로의 수를 반환한다. (0, 0)에서 시작해 가능한 모든 내리막길로 이동한다.아직 계산되지 않은 위치인 경우 DFS를 통해 경로를 계산한다. `dp[x][y] == -1`이미 계산된 곳으로, 해당 위치에서 가는 경로 수를 재사용한다..
[백준] 1074. Z (분할 정복/Java)
·
코딩 테스트/Baekjoon
[백준] 1074. Z 📌 풀이 과정 초기 접근 방식2^(N-1) × 2^(N-1) 크기의 2차원 배열을 만들어서 Z순서를 기록하고 (r,c)의 값을 찾는 방식으로 접근했다.하지만 N = 15인 경우, 2^14 × 2^14 크기의 배열이 필요하기 때문에 메모리 초과가 발생했다.하하!!! 크리스마스 이브날에 푼 문제라 그런지 어떻게 재귀로 이끌어내야 할지 머리가 안돌아갔다... 분할 정복N = 2 인 경우0123 N = 3 인 경우0145236789121310111415 N = 4 인 경우 N이 1 커질 때마다 사분면의 크기는 2배씩 커지고배열을 4등분한 각 사분면은 이전 크기의 Z 방문 순서를 그대로 따른다는 것을 알 수 있다. 1. 현재 좌표 (r, c)가 어느 사분면에 위치하는지 계산한다.r와 c ..
[싸피셜이 알려드림: 기술편] DispatcherServlet이 뭘까?
·
SSAFY
DispatcherServlet: Spring MVC에서의 역할과 요청 흐름지난 기사에서 서블릿(Servlet)에 대해 다뤘었죠? 오늘은 그 내용을 바탕으로, Spring MVC에서 중요한 역할을 맡고 있는 DispatcherServlet에 대해 좀 더 깊이 들어가 보려고 합니다. 복잡해 보일 수 있지만, 하나씩 차근차근 쉽게 설명해 드리겠습니다! 함께 시작해볼까요?✍️ MVC 패턴이란?MVC(Model-View-Controller) 패턴은 애플리케이션을 세 가지 주요 영역으로 분리하여 구성하는 디자인 패턴입니다. 이 방식은 애플리케이션의 유지보수성과 확장성을 높이고, 각 구성 요소가 독립적으로 동작할 수 있도록 돕습니다. 📌 MVC 패턴의 주요 구성 요소Model애플리케이션의 상태와 데이터를 캡슐화합..
[싸피셜이 알려드림: SSAFY편] 게임으로 평가받는다? 배틀싸피 등장!
·
SSAFY
안녕하세요! SSAFY 12기 싸피셜 안수진 기자입니다 😎어느새 2024년의 마지막 달, 12월이 찾아왔습니다.❄️☃️ 시간이 참 빠르게 지나간거같아요 ㅠㅠ오늘은 SSAFY 12기만의 특별한 프로그램, 배틀싸피를 소개해드리려고 합니다.SSAFY에서는 그동안 일타싸피, 싸피레이스와 같은 게임형 평가 시스템이 있었는데, 12기에는 새롭게 배틀싸피가 추가되었다고 합니다! 🧑‍🏭 배틀싸피란?SSAFY만의 알고리즘 평가 시스템으로, 게임을 통해 알고리즘 실력을 측정하는 새로운 방식입니다.테마는 바로 포격전! 참가자들은 알고리즘을 활용해 게임 내 다양한 문제를 해결해야 합니다.장애물을 피해 암호를 해독하고 포탄을 획득할 수 있습니다.최적의 경로로 이동해 제한 시간 안에 적의 포탑과 탱크를 공격하는 로직을 구현..