boj
-
일본 중앙은행의 묘수, 공통담보 자금공급 오퍼레이션Economics 2023. 1. 29. 19:29
. 일본이 시장의 예상을 뒤엎고 YCC(Yield Curve Control) 상단을 0.5%로 유지하기로 결정했다. YCC 상단을 0.5%로 유지하겠다는 이야기는 BOJ(Bank Of Japan)가 계속해서 일본 10년물 국채를 사들여서 국채 금리를 0.5% 선으로 유지하겠다는 이야기인데, 이미 너무 많은 양의 부채를 갖고 있는 중앙은행이기에, 계속해서 0.5%를 유지하지 못할 것이고, 이에 따라 0.75%나 1.0% 로 올릴 것으로 예상했던 시장에는 이 결정이 다소 의아하게 다가왔을 것이다. . BOJ는 Fed와의 기준금리 차가 5% 가까이 나고 있는 현재 상황에서도 10년물 국채 금리를 0.5%로 유지하기 위해 대량으로 돈을 찍어내서 살포하고 있다. 미국이 쉽사리 피봇을 하지 않고 있는 상황에서 금리..
-
[백준 6086 | 포드 풀커슨] 최대 유량Computer Science/Problem Solving (PS) 2020. 7. 7. 23:16
풀이 네트워크 유량과 관련된 기본적인 문제로, BFS를 사용하는 포드-풀커슨 알고리즘을 사용하여 구현하였습니다. 포드-풀커슨 알고리즘을 사용하여 이 문제를 해결 할 때의 주의점은, 파이프가 양쪽 모두로 물을 흘려보낼 수 있으므로, 파이프 하나를 양방향 간선으로 취급해야 한다는 점과, 동일한 파이프가 2개 이상 주어질 수 있다는 점입니다. 즉, A->B로 가는 용량 5짜리 파이프와 용량 2짜리 파이프가 동시에 입력될 수 있는데, 둘 중 어느 하나를 선택하는 것이 아니라 두 용량 모두를 더한 것이 A->B로 가는 파이프의 최종 용량이라는 것입니다. 소스 코드 (JAVA) import java.util.*; import java.io.*; /* @sckimynwa */ public class BOJ_6086 ..
-
[BOJ_1927 | Heap] 최소 힙Computer Science/Problem Solving (PS) 2019. 2. 13. 15:23
풀이 최소 힙(MIn Heap)을 직접 구현하는 문제였다.Heap은 연결 리스트로 구현하는 것 보다는 배열(Array)을 이용해서 구하는 것이 정신건강에도 좋고 구현하기 편리하다. 배열로 힙을 구현하면, 물론 데이터의 수를 알 수 없는 경우에는 저장 공간의 낭비가 생길 수 있겠지만그 경우에도 추가적인 메소드 구현을 통해 공간을 줄여주거나 공간을 늘려주면 되므로 큰 무리는 없다.가장 좋은 점은 Left Child, Right Child, Parent의 데이터를 index만으로 접근할 수 있다는 점이다. index 0부터 시작하는 경우에는Left Child = i*2+1Right Child = i*2+2Parent = (i-1)/2로 접근할 수 있다. 소스 코드 1234567891011121314151617..
-
[BOJ_1629 | Divide & Conquer] 곱셈Computer Science/Problem Solving (PS) 2019. 2. 9. 22:09
풀이 처음에 문제를 접근 할 때에는 그냥 반복문을 n번정도 돌리면서 곱하고, 그 값이 c보다 커지면 한번씩 나누어 나머지를 구해주고 이렇게 계산을 반복하면 되는 것 아닌가? 하고 생각했다. 이렇게 생각하면 굉장히 단순하고 구현또한 어렵지 않았기 때문에 왜 정답률이 30%가 채 안되는지 이해할 수 가 없었지만..Online Judge에 코드를 넣고 돌려본 뒤에 시간초과가 뜨는 걸 확인하고아 O(n)으로 풀면 안되는 문제였구나 라는 생각이 들었다. 정수의 거듭제곱을 구하는 알고리즘은 여러가지가 있다.그 중 가장 단순하고 구현하기 쉬운 알고리즘은 물론 a를 b번 반복하면서 곱해주는 것이지만시간복잡도가 O(n)으로 비교적 오래 걸리는 알고리즘이다. 그래서 나온 것이 바로 Divide & Conquer 방법을 사..
-
[BOJ_1940 | While] 주몽Computer Science/Problem Solving (PS) 2019. 2. 7. 21:37
풀이 반복문의 성질을 잘 이용해서 풀어야 하는 문제이다. 먼저 주어진 고유 번호를 arr 배열에 저장한 후 정렬한다.Java의 Arrays.sort를 이용하면 데이터 크기에 맞게 O(nlogn) 시간복잡도를 가지는 정렬 알고리즘으로Java가 데이터를 잘 정렬해 준다. 정렬해 준 데이터를 while문 안에 넣고 연산을 수행하면 된다.연산 과정은 다음과 같다.start = 0, end = num.of data -1 로 놓고 시작한다. 만약 arr[end]가 m보다 클 경우 end를 1만큼 감소시키고 continue한다.그렇지 않을 경우 i를 start부터 end-1까지 반복하면서 arr[i]+arr[end] == m이 되는 i의 값을 찾는다.값이 없으면 end를 감소시키고 continue, 값이 있으면 co..
-
[백준 3184 | DFS] 양Computer Science/Problem Solving (PS) 2019. 2. 5. 17:13
풀이 맨 처음에 BFS로 문제를 접근했다가 메모리초과가 나서 다시 DFS로 접근했던 문제였다.DFS로 이 문제를 해결하는 방법은 다음과 같다. 1. 반복문을 돌리면서 '#' 이 아닌 좌표를 찾아 차례로 DFS 함수를 실행한다.2. DFS 함수 안에서는 우선 해당 좌표의 값이 'v' 인지 'o' 인지, '.' 인지 확인한다.3. v 인경우 wCnt 값을 증가시키고, '.'로 바꾼다 o인 경우 sCnt 값을 증가시키고 '.'로 바꾼다.4. 해당 좌표의 상하좌우 값이 Valid 한 좌표인지 확인하고 각각 DFS를 수행한다. 하나의 구역 탐색이 끝나면, sCnt, wCnt를 비교해서 누가 이기는지 판단하고 최종 cnt1, 2값을 증가시키면 된다. 소스코드 1234567891011121314151617181920..
-
[BOJ_14501 | DFS] 퇴사Computer Science/Problem Solving (PS) 2019. 2. 2. 13:26
풀이 맨 처음에는 Dynamic Programming 방법으로 문제를 풀려고 시도했으나, 문제를 읽고 예제 몇개를 그림으로 그려가면서 시도를 해보니 DFS로 문제를 푸는 편이 더 간편할 것 같다는 생각이 들었다. DFS로 문제를 푸는 방법은 비교적 간단하다.큰 틀에서 보면 이중 For 문을 돌리는 것인데, 제시된 문제 예제를 기준으로 설명해보자면,1일부터 7일까지 반복문을 돌리면서 각각의 날짜를 시작으로 하는 경로를 찾는다.그리고 각각의 날짜에서 상담을 수행한 후에, 도달하게 되는 날짜를 다시 DFS에 집어넣어 반복한다. 예를 들어 1로 시작했다면, 1로 시작할 수 있는 경로는1 -> 4 ....1 -> 5 ....1 -> 6 ....등이 될 것이다. 이 모든 경로를 탐색하면서 경로에 놓여있는 Pi값을 ..
-
[BOJ_11053 | DP] 가장 긴 증가하는 부분 수열Computer Science/Problem Solving (PS) 2019. 2. 1. 08:44
풀이 가장 긴 증가하는 부분 수열을 구하는 문제는 다이나믹 프로그래밍을 이용하여 해결해야 한다.arr 배열에는 입력받은 input data의 값, 즉 수열의 값들을 저장하고dp 배열에는 그 숫자보다 작은 증가하는 부분 수열의 최대 길이를 저장한다. 예를들어 n = 9 인 데이터가 다음과 같이 들어온다고 가정하자. 10, 15, 40, 20, 15, 50, 35, 80, 100 이 상황에서 arr[0] ~ arr[8]까지의 값은 각각 위의 값을 순서대로 저장할 것이다.그리고 이중 포문을 돌면서 (데이터의 개수가 더 클 때에는 O(NlogN)의 시간복잡도를 갖는 알고리즘을 사용해도 된다.)각각의 인덱스에서 그 인덱스보다 작은 최장 부분 수열의 길이+1 의 값을 dp 배열의 값으로 저장하는 것이다. 10의 d..