queue 4

[백준 2164] 카드2

분수 합 문제설명 카드의 동작을 수행하고 난 결과를 출력시킨다. 알고리즘 몇 장의 카드가 있는지 입력 받는다. queue에 값을 채워 넣는다. 문제에서 주어진 대로 동작을 하기위해 반복문 내에서 카드가 1장 남을 때 까지 반복한다. 맨 앞의 값을 지우고 그 다음 값을 꺼내서 맨 뒤에 넣는다. 가장 마지막에 1개 남은 카드의 값을 출력시킨다. #include #include #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(NULL); int N; cin >> N; queue q; for (int i = 0; i < N; i++)//값 입력 q.push(i + 1); while (q.size() != 1)//값을 ..

Algorithm 2021.07.30

[백준 1715] 카드 정렬하기

카드 정렬하기 문제설명 총 카드 묶음의 수를 입력 받은 뒤, 각 카드의 수를 입력 받는다. 이때 카드를 확인하는 수를 A+B라고 한다. 가장 적은 수의 카드를 확인하는 경우의 수를 출력시킨다. 알고리즘 카드 묶음의 수와 각 카드 묶음 당 카드의 수를 입력 받는다. priority_queue를 사용하여 수가 입력되면 자동으로 오름차순으로 정렬되도록 한다. 큐에서 가장 앞에있는 (가장 작은 두 값) 두 값을 꺼내서 ans 변수에 더한 값을 넣는다. 다시 더한 값을 queue 에 넣고, 원래의 두 값은 지운다. queue에 남은 수가 1개가 되면 반복을 멈추고 나와서 ans의 값을 출력한다. #include #include #include using namespace std; int main(void) { i..

Algorithm 2021.07.30

[백준 11279] 최대 힙

최대 힙 문제설명 첫 줄에 연산의 수를 입력하고, 연산의 수만큼 매 줄마다 정수 x가 입력된다. 0이 입력되면 배열안의 가장 큰 수를 출력하고 지운다. 자연수가 입력되면 배열안에 값을 넣는다. 따라서 0이 나올때 마다 그 결과 값을 출력하면 된다. 만약 배열이 빈 경우 0이 입력되면 0을 출력한다. 알고리즘 연산의 수를 입력 받고 priority_queue를 선언한다. 0이 입력 될 때마다 비어있으면 0, 그렇지 않으면 top을 출력하고 pop해준다. 그 외의 자연수가 입력되면 push해준다. #include #include #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL)..

Algorithm 2021.07.29

[백준 11866] 요세푸스 문제0

요세푸스 문제0 문제 설명 N,K를 입력 받고 원에서 K번째 사람을 계속 제거한다. 이 때 제거 된 사람의 번호를 출력 시킨다. 알고리즘 값을 입력 받고 , N 만큼 vector에 넣는다. 출력하고자 하는 index라는 변수에 K-1을 더한다. 더하는 동작을 반복문 안에서 반복하다 보면 index범위를 넘어가는 경우가 있기 때문에 벡터의 사이즈 만큼 범위에 해당 되도록 뺀다. index 벡터 값을 출력 시킨다. 벡터에서 해당 변수를 삭제 시킨다. #include #include #include using namespace std; int main() 5 { int num =0,K=0; cin >> num>>K; vector v; for (int i = 0; i < num; i++) v.pus..

Algorithm 2021.07.28