목록전체 글 (241)
곽로그
문제 www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net check - 초기화 하는걸 더 간단하게 하는 방법 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static int N; public static int[] wineL..
문제 www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 풀이 이 문제에서 실수하기 쉬운 부분은 c번째 열에 있는 스티커를 선택하지 않을 수도 있다는 점이다. f(n,m)을 n번째 열의 m번째 스티커를 선택했을 때의 스티커 총합의 최대라고 정의하자. m=0인 경우는 스티커를 선택하지 않을 때, m=1은 1번째 행의 스티커를 선택했을때, m=2는 2번째 행의 스티커를 선택했을 때의 최대값이다. n번째 열에서 어떤 스티커를 선택할 수 있는 지 선택할 수 ..
문제 www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net check 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static int N; public static int[][] ascen..
문제 www.acmicpc.net/problem/1309 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net check zoo[i][j] = i번째 우리에 동물을 넣을 때 동물을 넣지 않는 경우의 수(j=0), 1번열에 넣는 경우(j=1), 2번열에 넣는 경우(j=2) 라고 정의하면, 점화식은 zoo[i][0] = zoo[i-1][0] + zoo[i-1][1] +zoo[i-1][2], zoo[i][1] = zoo[i-1][0] +zoo[i-1][2] zoo[i][2] = zoo[i-1][0] +zoo[i-1][1] 이 된다. 코드 import java.io.BufferedReader; import java.io.BufferedWriter; imp..
문제 www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 풀이 minPrice[n][c] 를 n개의 집을 색칠할때 끝의 집이 c(red, green, blue)인 경우 비용의 최소값으로 정의했다. 따라서 minPrice[n][R] 은 min(minPrice[n-1][G] , minPrice[n-1][B]) + price[n][R]이 된다. 최종 답은 min(minPrice[n][R],minPrice[n][G],minPrice[n][B])이다..
문제 www.acmicpc.net/problem/15988 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static long[] d; public static long MOD = 1000000009; public static void main(String[] args) thr..
문제 www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 0부터 n개의 수 k개를 더해서 n을 만든다고 할때 맨 마지막에 더하는 수를 생각해보자. 그 마지막 수에 올 수 있는 수는 0~ n이다. 마지막 수 앞에 오는 수는 0~ (n-마지막수) 중 k-1 개를 더해서 만든 수다. 따라서 f(n,k) 를 0부터 n까지의 수 k개를 더해서 n을 만들 수 있는 경우의 수라고 하면 f(n,k) = f(n-m,k-1) (0
문제 https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr check 쉬운문제를 쉽게 풀지못한다 이 문제를 처음에는 자리수를 구하고, N이 그 자리수에서 몇번째 수인지를 구한 다음, 모든 경우의 수를 구해서 해당 번째를 구하려고 했다. 왜 이렇게 복잡하게 생각했냐하면, 진법을 생각하지 못했기 때문 진법! 10진수를 2진수로, 3진수로 변환할 때를 생각해보면, 위 문제는 3진법 012 대신 412가 온거다 0과 0이 아닌 수 진법에서 0의 의미는 자리수가 하나 증가하는 것을 의미한다. 위 문제에서는 0 대신 4가 왔기때문에 윗자리수의 증가가 1번 늦게 시작한다. 즉 012의 3진법의 경우..