Algorithm 98

[주의][다이나믹 프로그래밍] 쉬운 계단 수

문제 링크 : https://www.acmicpc.net/problem/10844 쉬운 계단 수 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초256 MB248477522552028.535%문제45656이란 수를 보자.이 수는 인접한 모든 자리수의 차이가 1이 난다. 이런 수를 계단 수라고 한다.세준이는 수의 길이가 N인 계단 수가 몇 개 있는지 궁금해졌다.N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하는 프로그램을 작성하시오. (0으로 시작하는 수는 없다.)입력첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.출력첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.예제 입력 1 복사1 예제 출력 1 복사9 예제 입력 2 복사..

[다이나믹 프로그래밍] 붕어빵 판매하기

문제 링크 : https://www.acmicpc.net/problem/11052 붕어빵 판매하기 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초256 MB125377217536157.813%문제강남역에서 붕어빵 장사를 하고 있는 해빈이는 지금 붕어빵이 N개 남았다.해빈이는 적절히 붕어빵 세트 메뉴를 구성해서 붕어빵을 팔아서 얻을 수 있는 수익을 최대로 만드려고 한다. 붕어빵 세트 메뉴는 붕어빵을 묶어서 파는 것을 의미하고, 세트 메뉴의 가격은 이미 정해져 있다.붕어빵 i개로 이루어진 세트 메뉴의 가격은 Pi 원이다.붕어빵이 4개 남아 있고, 1개 팔 때의 가격이 1, 2개는 5, 3개는 6, 4개는 7인 경우에 해빈이가 얻을 수 있는 최대 수익은 10원이다. 2개, 2개로 붕어빵을 팔면 되기 때..

[다이나믹 프로그래밍] 1, 2, 3 더하기

문제 링크 : https://www.acmicpc.net/problem/9095 1, 2, 3 더하기 성공한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB1820211794821663.356%문제정수 4를 1, 2, 3의 조합으로 나타내는 방법은 총 7가지가 있다.1+1+1+11+1+21+2+12+1+12+21+33+1정수 n이 주어졌을 때, n을 1,2,3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.출력각 테스트 케이스마다, n을 1,2,3의 합으로 나타내는 방법의 수를 출력한다.예제 입력 1 복사3 4 7 10 예제 출력..

[주의][다이나믹 프로그래밍] 2×n 타일링 2

문제 링크 : https://www.acmicpc.net/problem/11727 2×n 타일링 2 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초256 MB105746218508459.351%문제2×n 직사각형을 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×17 직사각형을 채운 한가지 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 복사2 예제 출력 1 복사3 예제 입력 2 복사8 예제 출력 2 복사171 예제 입력 3 복사12 예제 출력 3 복사2731 [ 문제 풀이 ] - D[n] = 2 x n 크기의 직사각형을 채우는 방..

[주의][다이나믹 프로그래밍] 2×n 타일링

문제 링크 : https://www.acmicpc.net/problem/11726 2×n 타일링 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초256 MB246309063692634.996%문제2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.예제 입력 1 복사2 예제 출력 1 복사2 예제 입력 2 복사9 예제 출력 2 복사55 [ 문제 풀이 ] D[n] = 2 x n 크기의 직사각형을 채우는 방법의 수라고 뒀을 때, - N = 1일 ..

[다이나믹 프로그래밍] 1로 만들기

- 문제 링크 : https://www.acmicpc.net/problem/1463 1로 만들기 성공시간 제한메모리 제한제출정답맞은 사람정답 비율2 초128 MB48103156291019932.321%문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최소값을 출력한다.예제 입력 1 복사2 예제 출력 1 복사1 예제 입력 2 복사10 예제 출력 2 복사3 ..

2. 큐(Queue) / 원형큐(Circular Queue)

2. 큐(Queue) - 한쪽 끝(뒤)에서는 자료를 삽입하고, 다른 한쪽 끝(앞)에서 자료를 출력하는 형태의 자료구조 - 가장 먼저 넣은 것이 가장 먼저 나오게 되므로 First In First Out(FIFO)라고 한다. - front : 출력이 일어나는 곳 - rear : 삽입이 일어나는 곳 [ 배열을 이용한 큐 구현 ] - 기본적인 형태의 Queue를 선형큐(Linear Queue)라고 한다. 선형큐의 단점은 데이터를 출력한 영역은 재사용 할 수 없다는 것이다. (선형큐에 데이터를 꽉채우고 모두 꺼내면 front와 rear 모두 마지막 Index를 가리키게 된다. ) - 이러한 문제점를 개선하기 위해 원형큐(Circular Queue)로 구현한다. 아래와 같이 큐의 끝의 다음이 처음이 되도록 구현된..

1. 스택(Stack)

1. 스택 - 한쪽 끝에서만 자료를 넣고 뺄 수 있는 자료 구조이다. - 마지막으로 넣은 것이 가장 먼저 나오기 때문에 Last in First Out(LIFO)라고 한다. [ 배열을 이용한 스택 구현 ] 0. 초기 상태 1. push 연산 : Stack에 데이터를 삽입 : 현재 size에 데이터를 삽입하고, size를 하나 증가시킨다. stack[size] = 4; size++; stack[size] = 3; size++; 2. pop 연산 : Stack에서 데이터를 꺼낸다. : 현재 size - 1에 있는 데이터를 출력하고 size를 하나 줄인다. int result = stack[size-1]; size--; return result; 3. Empty 연산 : Stack이 비었는지 비어있지 않은지를..