본문 바로가기

분류 전체보기

(70)
백준 댄스 파티(2831) 오늘은 투포인트 문제를 풀어보았다. https://www.acmicpc.net/problem/2831 2831번: 댄스 파티 남자 N명과 여자 N명이 상근이가 주최한 댄스 파티에 왔다. 상근이는 모든 사람의 키를 알고있다. 각 남자는 모두 여자와 춤을 출 수 있고, 여자는 남자와 춤을 출 수 있다. 모든 사람은 많아야 한 www.acmicpc.net 위에 조건을 따지고 보면 두가지 조건의 그룹이 생긴다. 큰 남자를 좋아하는 여자 & 작은 여자를 좋아하는 남자 큰 여자를 좋아하는 남자 & 작은 남자를 좋아하는 여자 이렇게 두그룹으로 구분한뒤 큰 사람, 작은사람 비교하는 알고리즘을 만들면 된다. import java.io.BufferedReader; import java.io.IOException; impo..
소프트웨어 배포 전략 배포 전략이란?서비스를 중지하지 않고 새로운 버전을 배포하기 위해 여러 전력들이 존재한다.과거에는 수개월 또는 수년에 한번씩 서비스를 릴리즈 하였지만, 최근에는 마이크로 서비스 아키텍쳐와 같은 작은 단위의 서비스를 좀 더 자주 배포하는 방식으로 변화하고있다. 배포 전략 종류롤링 배포(Rolling Update Deployment)블루/그린 배포(Blue/Green Deployment)카나리 배포(Canary Deployment) 1. 롤링 배포 (Rolling UpdateDeployment) 롤링 배포란 가동중인 여러대의 서버를 점진적으로 구버전에서 신버전으로 전환하며, 구버전 인스턴스를 제거하는 전략입니다. 장점서비스 중단 없이 배포가 가능합니다.많은 리소스가 필요하지 않으며 필요시에는 이전 버전으로 ..
백준 암호만들기(1759) bruteforcing 문제를 풀어보았다. https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 문제 풀이 문자의 정렬 순서는 a-z배열을 기준으로 인덱스를 비교하여 정렬을 보장했다. 자음 모음 확인은 마지막으로 만들어진 문자를 기준으로 확인했다. 출력시 정렬 하는방식은 우선순위 큐를 이용했다. 코드 package bruteforcing; import java.io.BufferedReader; import java.io.IOException; import..
백준 색칠하기(13265) 오늘 DFS 문제를 풀어보았다. https://www.acmicpc.net/problem/13265 13265번: 색칠하기 각 테스트 케이스에 대해서 possible 이나 impossible 을 출력한다. 2 가지 색상으로 색칠이 가능하면 possible. 불가능하면 impossible 이다. www.acmicpc.net 문제 풀이 각 노드를 서로 다른색으로 색칠을 해준다. 각 노드와 연결된 노드가 색이 다른지 확인 해준다. 두가지 기준으로 풀이를 해주면 된다. ※ 노드는 모두 연결되어 있지 않을 수도있다. 해당 부분을 생각하지 못하여 문제를 틀렸어서 시간을 소비했다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io..
Jasypt 암호화를 이용하여 정보 보호하기 jasypt jasypt는 형상관리, 애플리케이션 배포시에 DB계정 및 중요한 비밀 키 값들을 평문으로 저장하는것을 막기 위해 프로퍼티를 암호화 할 수 있게 제공해주는 라이브러리 입니다. 사용법 및 설명의존성(dependency) 추가 com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.4 implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4' @EnableEncryptableProperties 어노테이션을 통하여 SpringBoot 암호화할 빈을 생성해줄 class를 생성한다.Bean 이름을 지정해주 않게 되면 Default 빈 명칭은 jasyptStringEn..
백준 김바천국의 계단(28069) 오늘은 DP문제를 풀어보았다. https://www.acmicpc.net/problem/28069 28069번: 김밥천국의 계단 첫 번째 줄에 계단 개수에 해당하는 $N$, 계단을 오르는 횟수 $K$가 주어진다. $(1 \leq N, K \leq 1\,000\,000)$ www.acmicpc.net 해당 문제를 N * K 번 수행을 하게되면 메모리 초과 혹은 시간 초과가 발생된다. 해당 문제를 풀기 위해서 DP를 이용했다. 키 포인트 현재 계단이 밝을 수 있는 계단인가? 현재 계단은 몇번째 행위로 밝을 수 있는 계단 인가? 위 두가지 사항을 누적해가며 김밥 가게 위치에 최소 행동 값을 DP하면 된다. import java.io.BufferedReader; import java.io.IOException;..
백준 준규와 사과(5913) 오늘은 백트래킹 문제를 풀었다. https://www.acmicpc.net/problem/5913 5913번: 준규와 사과 대학교를 졸업한 준규는 농부의 꿈을 이루기 위해서 가로 5m, 세로 5m 크기의 땅을 구입했다. 준규는 땅을 가로 1m, 세로 1m 크기로 구역을 나누었다. 가장 왼쪽 위 칸은 (1,1)이고 가장 오른쪽 아래 www.acmicpc.net 장애물을 제외하고 모든 경우를 진행해야하는 케이스이다 문제 조건중에서는 두 명의 포인트가 동등하게 움직여서 모든 경우를 채워야하는 조건이 붙어있다. 장애물을 제외하고 모든 경우를 지나가야한다 두 포인트가 동등하게 움직여 모이는 포인트를잡아야한다 필자의 풀이는 k는 짝수로 각 포인트가 움직여야하는 거리를 계산 0,0 포인트에서 해당 거리를 움직인 이후..
백준 십자뒤집기(10472) bruteforcing 문제를 풀어보았다. https://www.acmicpc.net/problem/10472 10472번: 십자뒤집기 당신에게 3x3 크기의 보드가 주어진다. 각각의 칸은 처음에 흰색 혹은 검은색이다. 만약 당신이 어떤 칸을 클릭한다면 당신이 클릭한 칸과 그 칸에 인접한 동서남북 네 칸이 (존재한다면) 검은색 www.acmicpc.net 인접한 블록들을 내가 클릭했을 때 변경되는 문제이다. 해당 수를 클릭하였을때 인접한 블록들의 상태를 변경해준다. 클릭하지 않고 지나간다. 두 가지 방식으로 총 9개의 블록을 지나갔을때 블록이 전부가 하얀색이 되는지 확인하면 된다. import java.io.BufferedReader; import java.io.IOException; import jav..
백준 회장뽑기(2660) 최단거리 문제를 풀었다 https://www.acmicpc.net/problem/2660 2660번: 회장뽑기 입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 www.acmicpc.net 문제를 해독력이 생각보다 필요한 문제였다. 친구의 친구 .. 의 의미는 결국 현재 노드로부터 최단거리로 가장 멀리느있는 노드 결국 시작 위치 노드에서 가장 멀리 있는 노드의 거리가 가장 작은것을 조회하면 되는 문제였다. 조금 구현에 가까운 문제였다 import java.io.BufferedReader; import java.io.IOException; import java...
백준 좋다(1253) 이분 탐색 문제를 풀어보았다. https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 투포인터로 문제를 해결 할 수 있었다. 정렬된 수를 가지고 선택한 수를 투포인트 진행하며 가능여부를 체크하면된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashMap; import java.ut..