분류 전체보기 123

[다이나믹 프로그래밍] 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이 비었는지 비어있지 않은지를..