본문 바로가기

acmicpc.net

[acmicpc.net] 11726 2×n 타일링 문제 링크 : https://www.acmicpc.net/problem/11726 문제 내용2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 소스코드 #include int main(){ int d[1000+1]; int N; d[0] = 1; d[1] = 1; scanf("%d", &N); for(int i=2; i
[acmicpc.net] 2293 동전 1 문제 링크 : https://www.acmicpc.net/problem/2293 문제 내용n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. (각각의 동전은 몇 개라도 사용할 수 있다.) 소스코드 #include using namespace std; int main() { int n, k; int *value; int **result; cin >> n >> k; value = new int[n]; result = new int*[2]; for(int i=0; i> value[i]; } for(int i=0; i
[acmicpc.net] 1932 숫자삼각형 문제 링크 : https://www.acmicpc.net/problem/1932 문제 내용 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5위 그림은 크기가 5인 숫자 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 숫자는 모두 정수이며, 범위는 0 이상 99 이하이다. 소스코드 #include using namespace std; int main() { int n, *arr, *resul..
[acmicpc.net] 2167 2차원 배열의 합 문제 링크 : https://www.acmicpc.net/problem/2167 문제 내용2차원 배열이 주어졌을 때 (i, j) 위치부터 (x, y) 위치까지에 저장되어 있는 수들의 합을 구하는 프로그램을 작성하시오. 배열의 (i, j) 위치는 i행 j열을 나타낸다. 소스코드 #include using namespace std; int main() { // your code goes here int X, Y; int ** arr; int ** sum_arr; cin >> X; cin >> Y; arr = new int*[X+2]; sum_arr = new int*[X+2]; for(int i=0; i j; cin >> x; cin >> y; cout
[acmicpc.net] 2579 계단 오르기 문제 링크 : https://www.acmicpc.net/problem/2579 문제 내용 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째, 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안된다. 단, 시작점은 계단에 ..
[acmicpc.net] 2193 이친수 문제 링크 : https://www.acmicpc.net/problem/2193 문제 내용 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 들 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 1. 이친수는 0으로 시작하지 않는다. 2. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친수가 아니다. N(1≤N≤90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 소스코드 #include using nam..
[acmicpc.net] 1463 1로 만들기 문제 링크 : https://www.acmicpc.net/problem/1463 문제 내용 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. 1. X가 3으로 나누어 떨어지면, 3으로 나눈다.2. X가 2로 나누어 떨어지면, 2로 나눈다.3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만드려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오. 소스코드 #include using namespace std; int main() { int N; int *arr; cin >> N; arr = new int[N+1]; for(int i=0; i
[acmicpc.net] 1149 RGB거리 문제 링크 : https://www.acmicpc.net/problem/1149 문제 내용 RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이다. 처음 집과 마지막 집은 이웃이 아니다. 각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠할 때 드는 비용의 최솟값을 구하는 프로그램을 작성하시오. 소스코드 #include using namespace std; int main() { int **last = new int*[3]; int **val = new int*[3]; int N; cin >> N; fo..