[백준] 16566번: 카드 게임
📌 문제 https://www.acmicpc.net/problem/16566 📌 설명 철수가 내는 카드보다 민수가 내는 카드의 번호가 더 크도록 해야 한다. 즉, M개의 주어진 카드에서 철수가 낸 카드의 번호보다 큰 최소의 번호를 내야 한다. 이 부분에서 이분 탐색으로 해결해야 함을 알 수 있다. set을 통해 M개의 카드를 관리하고 upper...
📌 문제 https://www.acmicpc.net/problem/16566 📌 설명 철수가 내는 카드보다 민수가 내는 카드의 번호가 더 크도록 해야 한다. 즉, M개의 주어진 카드에서 철수가 낸 카드의 번호보다 큰 최소의 번호를 내야 한다. 이 부분에서 이분 탐색으로 해결해야 함을 알 수 있다. set을 통해 M개의 카드를 관리하고 upper...
📌 문제 https://www.acmicpc.net/problem/1509 📌 설명 처음부터 끝까지 문자열을 순회하면서 팰린드롬을 찾고, 계속하여 최솟값을 갱신해야 한다. dp[i]를 i번 째 문자까지의 최소 분할 횟수라고 하자. 현재, 문자열의 i번 째 인덱스를 가리킨다고 할 때, i번 째 문자를 마지막으로 하는 팰린드롬이 있는지 확인한다. ...
📌 문제 https://www.acmicpc.net/problem/1753 📌 설명 가장 대표적인 다익스트라 문제이다. 우선순위 큐를 통해 구현하였다. 📌 코드 #include <iostream> #include <queue> #include <vector> #define INF 300001 using na...
📌 QueryDSL이란? QueryDSL은 HQL(Hibernate Query Language)를 타입에 안전하게(type-safe) 생성 및 관리하는 프레임워크이다. 정적 타입을 통해 SQL이나 JPQL 쿼리를 자바 코드로 작성할 수 있다. 정적 타입이란 컴파일 시점에 변수나 객체의 데이터 타입이 미리 결정되는 것을 말한다. ‘type...
📌 문제 https://www.acmicpc.net/problem/1562 📌 설명 비트필드를 통한 DP를 통해 해결하였다. 3차원 DP 배열을 선언한 후, 길이가 1인 경우에 대하여 초기화를 진행했다. n이 100 이하이고, 비트필드의 최댓값은 1023이므로 삼중 for문을 통해 충분히 해결 가능하다. for문을 순회하며 값이 존재하는 경우 계...
📌 문제 https://www.acmicpc.net/problem/1799 📌 설명 9663번: N-Queen 문제와 유사한 문제이다. 역시 백트래킹으로 해결하는 문제이고, 시간 초과가 발생하지 않게 효과적으로 구현하는 것이 목적이다. 핵심 아이디어는 ‘서로 다른 두 비숍은 같은 대각선 상에 위치할 수 없다.’이다. 처음에는 비숍이 위치할 수 ...
📌 문제 https://www.acmicpc.net/problem/16724 📌 설명 주어진 지도의 사이클의 개수를 찾는 문제이다. 각 노드에 대하여 DFS를 수행하여 사이클을 찾는다. DFS를 수행 후 리턴될 때 visited[i][j]을 -1로 설정한다. 이는 추후 DFS를 수행 시 이미 생성된 사이클의 노드에 접근하지 못하게 하는 역할을 한...
📌 문제 https://www.acmicpc.net/problem/2533 📌 설명 DFS로 트리를 순회하며 가능한 얼리 어답터의 수를 구하는 문제이다. 최소 얼리 어답터의 수를 구하기 위해 DP를 사용한다. 먼저 노드 연결 관계를 vector 배열 nodes에 저장한다. DFS로 순회하며 DP 배열을 초기화한다. 사용할 DP 배열은 이차원 배...
📌 문제 https://www.acmicpc.net/problem/10775 📌 설명 각 비행기에 대하여 가능한 게이트를 확인하는 방법(O(GP))은 시간 초과가 발생한다. 분리 집합을 통해 비행기가 들어갈 수 있는 게이트를 계속 초기화를 해야 한다. 구체적인 방법은 다음과 같다. 1. 각 게이트의 부모를 자신의 번호로 설정한다. 2. 비행기...
📌 Lombok이란? Lombok 이란 어노테이션 기반으로 자바 코드를 자동으로 생성해주는 라이브러리이다. 이를 통해 코드가 간결해지며 가독성을 향상시킬 수 있다. 또한 반복적으로 작성되는 보일러플레이트 코드가 감소하게 된다. 이는 개발자가 핵심 비즈니스 로직에 더 집중할 수 있도록 하는 효과를 가져오며, 유지보수가 쉬워진다. 실제로 Lomb...