[BOJ 1285] 동전 뒤집기
·
Coding Test/Problem Solving
1285번: 동전 뒤집기 첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위 www.acmicpc.net 문제 설명 뒷면이 위를 향하는 동전 개수를 최소로 해야 하니 T가 최소일 때를 T의 개수를 구해야 한다. 예제 설명 위 그림처럼 2번째 행을 뒤집고 > 3번째 열을 뒤집으면 T가 2개가 되는데 이 때가 T가 최소일 때이므로 2가 출력된다 시간 복잡도 N은 최대 20까지 가능하며, 행이나 열을 뒤집을 수 있기 때문에 모든 경우의 수를 생각했을 때 총 연산 횟수는 2^(20+20) = 2^40번일 것이다. 2^40번이라면 시간 초과가 날 것이다. 하지만, 이 때..
logback과 Sentry로 에러 모니터링하기
·
Spring
들어가며 현재 진행중인 프로젝트에서는 logback과 팀 내 협업 툴인 디스코드를 연동하여 애플리케이션 단에서 에러 로그가 발생하면 디스코드로 알림이 오도록 환경을 구축하였다. 빠르게 에러를 파악할 수 있다는 장점이 있지만, 디스코드는 메신저 툴이기 때문에 로그를 관리하기 어렵다는 단점이 있다. 그렇기 때문에 에러 트래킹 및 성능 모니터링 도구로 유명한 Sentry를 프로젝트에 도입하여 로그를 보다 체계적으로 관리하고자 한다. 참고로 Sentry는 완전 무료 서비스가 아니다. 무료 Plan을 제공하긴 하나 사용할 수 있는 기능이 한정적이다. 멤버 수 제한 - 유료 사용의 경우 무제한 에러 수 제한(월 5,000개) - 유료 사용의 경우 100,000개 이상 히스토리 제한(30일) - 유료 사용의 경우 9..
[BOJ 19942] 다이어트
·
Coding Test/Problem Solving
방금 배운 비트마스킹 을 활용하여 백준 문제를 풀어보자! 19942번: 다이어트 식재료 N개 중에서 몇 개를 선택해서 이들의 영양분(단백질, 탄수화물, 지방, 비타민)이 일정 이상이 되어야 한다. 아래 표에 제시된 6가지의 식재료 중에서 몇 개를 선택해서 이들의 영양분의 각 www.acmicpc.net 문제 설명 예제 1번은 식재료 1, 3, 5를 골랐을 때이고, 2번은 식재로 2, 3, 4를 골랐을 때이다. 둘 다 최소 영양성분 100, 70, 90, 10 이상을 만족하지만 총 가격은 1번이 270, 2번이 180으로 2번을 골랐을 때가 가격이 더 저렴하므로 더 나은 선택이 된다. 구현 아이디어 각 재료의 선택 여부를 0과 1로 나타내면 6자리 이진수로 모든 경우의 수를 나타낼 수 있다. ex) 111..
[C++] 비트 연산과 비트마스킹
·
Coding Test/Algorithm & Data Structure
비트마스킹을 알고리즘 문제를 풀 때 어떻게 활용하는지 알아보기 전에 비트연산자를 먼저 알아보자. 비트연산자 연산자 기능 & AND 연산 | OR 연산 ^ XOR 연산 ~ 모든 비트를 반전 비트 열을 오른쪽으로 이동 & 연산자 true & true = true이고, 나머지는 모두 false를 반환한다 연산 결과 0 & 0 0 1 & 0 0 0 & 1 0 1 & 1 1 ex) 1001 & 1000 = 1000 | 연산자 하나라도 true라면, true를 반환한다. 연산 결과 0 & 0 0 1 & 0 1 0 & 1 1 1 & 1 1 ex) 1001 & 1000 = 1001 ^ 연산자 두 비트가 서로 다를 경우(true ^ true, false ^ false)에 true를 반환한다. 연산 결과 0 & 0 1 1..
[BOJ 4179] 불!
·
Coding Test/Problem Solving
4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 문제 설명 예제 아래 사진은 시간별 지훈이(왹깅)와 불(🔥)의 위치를 나타낸 그림이다. 이 때 주의할 것은 지훈이와 불이 '동시에' 움직인다는 것이다. 지훈이가 움직인 다음 불이 붙거나, 불이 붙은 다음 지훈이가 움직이는 것이 아니다. t=2일 때 미로의 가장자리에 도착하였고, 한 칸을 더 움직여 t=3일 때 지훈이는 미로를 탈출할 수 있다. 구현 아이디어 처음에는 지훈이가 움직일 수 있는 경로가 여러 개라고 생각해서 DFS로 완전탐색을 해야 한..
Spring Boot 3.0 이상에서 QueryDsl 프로젝트 세팅
·
Spring
진행 버전은 다음과 같습니다. - Java 17 - JDK 17 - Spring Boot 3.1.4 - QueryDsl 5.0.0 build.gradle // QueryDsl 이라고 주석이 달린 부분이 기본 build.gradle에서 추가해준 부분이다. plugins { id 'java' id 'org.springframework.boot' version '3.1.4' id 'io.spring.dependency-management' version '1.1.3' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotat..
짱정연
짱정연의 짱개발자 도전기