-
[백준 Silver 1] 1309 동물원 - Java
문제링크 : https://www.acmicpc.net/problem/1309 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 접근 과정 : 2차원 배열(zoo[][])을 선언하고, 2칸 모두 사자가 없는 경우 / 왼쪽칸에 사자가 있는 경우 / 오른쪽칸에 사자가 있는 경우로 경우의 수를 더했다 즉, Bottom-Up 방식으로 DP를 구현하였다. 소스 코드 및 결과 : package BOJ; /* 동물원 */ import java.io.*; public class BOJ1309 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedR..
2021.12.23
-
[백준 Silver 2] 10971 외판원 순회2 - Java
문제링크 : https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 접근 과정 : 한 도시에서 출발하여 모든 도시를 방문한 뒤, 출발 도시로 돌아왔을 때의 비용이 가장 적은 것을 출력하는 문제. 방문체크를 하면서 완전탐색을 하는 방법을 생각 도시의 수가 최대 10개이기에, 비용을 저장한 배열을 그냥 탐색하면서 다음 경로를 추적. 방문체크는 비트를 이용하여 판단 비용을 누적해가면서 경로를 추적하다가, 만약 이..
2021.12.22
-
[백준 Platinum 5] 6549 히스토그램에서 가장 큰 직사각형 - Java
문제링크 : https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net 접근 과정 : 주어진 직사각형들을 순회하면서, 현재 i번째 사각형까지 만들 수 있는 직사각형의 넓이를 구하려고 했다. 현재 i번째 사각형과 비교해서 가능한 높이의 이전 사각형을 Stack에 담아서 비교하고자 하였다. 소스 코드 및 결과 : package BOJ; /* 히스토그램에서 가장 큰 직사각형 */ import java.i..
2021.12.19
-
[백준 Silver 3] 15270 친구 팰린드롬 - Java
문제링크 : https://www.acmicpc.net/problem/15270 15270번: 친구 팰린드롬 초등학생인 재홍이는 이번 봄 학예회 때, 재홍이가 지휘를 맡고 반 친구들이 춤을 추기로 계획했다. 이 춤은 시작할 때 춤추는 친구들이 일렬로 쭉 서서 각자 막춤을 추다가, 가운데 있는 친구를 www.acmicpc.net 접근 과정 : 반 친구들은 1:1로 묶여져야 한다. 관계도의 조합을 만들어가고, 각 조합에 따라 친구의 사용 유무를 확인하여 가능한 최대수를 찾는다!! 최대한 세울 수 있는 친구 수가 N보다 작다면, 1명을 추가!! 소스 코드 및 결과 : package BOJ; import java.io.*; import java.util.*; /* 친구 팰린드롬 */ public class BO..
2021.12.16
-
트랜잭션이 왜 필요할까?
1. 트랜잭션이 무엇인가요? 트랜잭션이란 DB의 상태를 변화시키는 하나의 논리적인 작업에 포함된 연산들의 집합입니다. DB의 상태를 변화시키는 작업은 일반적으로 하나의 작업으로 이루어지지 않습니다. 예를 들어, 은행계좌에서 금액을 이체하려 한다면, 1)A계좌의 잔액을 조회 2)A계좌의 잔액에서 이체할 금액을 빼고 저장 3)B계좌의 잔액을 조회 4)B계좌에 이제금액을 더한 뒤 저장 까지 몇가지의 과정들이 필요하고 이를 모두 합쳐 계좌 이체라는 하나의 작업단위를 구성합니다. 이렇듯 DB 상태 변화를 위한 작업에 포함된 과정(연산)의 집합을 트랜잭션이라고 합니다. 그리고 트랜잭션의 모든 과정의 수행 여부에 따라 Commit되거나 Rollback 됩니다.2. 트랜잭션의 성질에 대해 말해주세요. 트랜잭션의 성질은..
2021.05.17
-
[프로그래머스 Lv.4] 선입 선출 스케줄링 - JAVA
문제 링크 : programmers.co.kr/learn/courses/30/lessons/12920 코딩테스트 연습 - 선입 선출 스케줄링 처리해야 할 동일한 작업이 n 개가 있고, 이를 처리하기 위한 CPU가 있습니다. 이 CPU는 다음과 같은 특징이 있습니다. CPU에는 여러 개의 코어가 있고, 코어별로 한 작업을 처리하는 시간이 다릅니 programmers.co.kr 접근 과정 1) 우선순위 큐와 반복문을 활용한 풀이 우선순위 큐를 이용하여 core들을 순회시켰다. 반복문안에서 core들이 순서대로 작업을 1개씩 담당하며 처리했고 n은 차감되었다. n이 0이 되었을 때, 마지막 작업을 처리한 core의 인덱스를 출력하였다. => 정확성은 통과하였으나, 효율성에서 시간초과라는 결과를 보였다. 2) ..
2021.04.13