목차 이진 탐색 [Java+Python]1920번, 수 찾기 [Java+Python]1654번, 랜선 자르기 [Java+Python]2805번, 나무 자르기 [Java+Python]2110번, 공유기 설치 [Java+Python]2805번, K번째 수 [Java+Python]12015번, 가장 긴 증가하는 부분 수열 2 문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm..
목차 분할 정복 단계 [Java+Python]2630번, 색종이 만들기 [Java+Python]1992번, 쿼드 트리 [Java+Python]1780번, 종이의 개수 [Java+Python]1629번, 곱셈 [Java+Python]11401번, 이항 계수 3 [Java+Python]2740번, 행렬 곱셈 [Java+Python]10830번, 행렬 제곱 [Java+Python]11444번, 피보나치 수 6 문제 히스토그램은 직사각형 여러 개가 아래쪽으로 정렬되어 있는 도형이다. 각 직사각형은 같은 너비를 가지고 있지만, 높이는 서로 다를 수도 있다. 예를 들어, 아래 그림은 높이가 2, 1, 4, 5, 1, 3, 3이고 너비가 1인 직사각형으로 이루어진 히스토그램이다. 히스토그램에서 가장 넓이가 큰 직사각..
목차 분할 정복 단계 [Java+Python]2630번, 색종이 만들기 [Java+Python]1992번, 쿼드 트리 [Java+Python]1780번, 종이의 개수 [Java+Python]1629번, 곱셈 [Java+Python]11401번, 이항 계수 3 [Java+Python]2740번, 행렬 곱셈 [Java+Python]10830번, 행렬 제곱 [Java+Python]6549번, 히스토그램에서 가장 큰 직사각형 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그다음 2번째부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 $F_n = F_{n-1} + F_{n-2} (n ≥ 2)$가 된다. $n=17$일 때까지 피보나치 수를 써보..
목차 분할 정복 단계 [Java+Python]2630번, 색종이 만들기 [Java+Python]1992번, 쿼드 트리 [Java+Python]1780번, 종이의 개수 [Java+Python]1629번, 곱셈 [Java+Python]11401번, 이항 계수 3 [Java+Python]2740번, 행렬 곱셈 [Java+Python]11444번, 피보나치 수 6 [Java+Python]6549번, 히스토그램에서 가장 큰 직사각형 문제 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. 입력 첫째 줄에 행렬의 크기 N과 B가 주어진다. (2 ≤ N ≤ 5, 1 ≤ B ≤ 100,000,0..
목차 분할 정복 단계 [Java+Python]2630번, 색종이 만들기 [Java+Python]1992번, 쿼드 트리 [Java+Python]1780번, 종이의 개수 [Java+Python]1629번, 곱셈 [Java+Python]11401번, 이항 계수 3 [Java+Python]10830번, 행렬 제곱 [Java+Python]11444번, 피보나치 수 6 [Java+Python]6549번, 히스토그램에서 가장 큰 직사각형 문제 N*M크기의 행렬 A와 M*K크기의 행렬 B가 주어졌을 때, 두 행렬을 곱하는 프로그램을 작성하시오. 입력 첫째 줄에 행렬 A의 크기 N과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이..
문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50}인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 풀이 티어는 하나 낮지만 왜인지 포도주 마시기 문제보다 어려웠던 문제이다. 메모이제이션을 위한 배열을 갱신하는 부분이 특히 어려웠는데, 2차원이 아니라 1차원으로 선언한 뒤 그때그때 바꾸는 방식은 깔끔..
문제 효주는 포도주 시식회에 갔다. 그곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램을 작성하시오. 예를 들어 6..
문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 풀이 반복되는 동적계획법 문제이다. 계속 풀다 보니 동적계획법은 계획을 세우는 자체보다 경계선을 올바로 잡는 게 중요하다는 생각이 든다. 아니 어쩌면 경계선을 잡는 것 자체가 계획의 전부인지도. 우선 입력으로 주어지는 n을 받아 이차원 배열 memo를 선언했다. 그리고 0을 제외한 memo[1]의 요소를 1로 초기화했는데,..
문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 풀이 조금씩 난이도가 오르는 동적계획법 문제다. 하지만 기본적인 접근 방식은 다를 것이 없어서, 어느 연산을 어떤 식으로 배치하는 지만 정해주면 되는 문제. 우선 주어진 수보다 1이 더 큰 길이를 가진 memo 배열을 선언한다. 그리고 memo[1]에는 초기값으로 0을 입력..
문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 계단을 밟고..
- Total
- Today
- Yesterday
- 지지
- 자바
- 알고리즘
- 세모
- 세계여행
- 유럽여행
- 스트림
- 맛집
- 기술면접
- 리스트
- 파이썬
- 칼이사
- 야경
- BOJ
- 여행
- 스프링
- spring
- 동적계획법
- 남미
- Algorithm
- java
- 유럽
- RX100M5
- 세계일주
- Backjoon
- Python
- 중남미
- 백준
- a6000
- 면접 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |