본문 바로가기

728x90

자료구조

[C++]백준 11286번: 절댓값 힙 문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제이해 첫째 줄에 연산의 개수(N)를 입력합니다. N개의 줄에 대해 연산의 정보(x)를 입력합니다. 입력에서 0이 입력된 수만큼 답을 출력합니다. 절댓값을 기준으로 정렬된 힙을 만들기 위해서는 당연히 절댓값을 기준으로 정렬한 우선순위 큐(priority_queue)를 사용하여야 합니다. 주의해야 할 점이 있다면 절댓값이 같고 부호가 다른 수에 대해서는 음수가 우선순위가.. 더보기
[C++]백준 11651번: 좌표 정렬하기 2 문제 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제이해 첫째 줄에 N을 입력합니다. 두 번째 줄부터 N개의 좌표(x, y)를 입력합니다. 좌표를 기준에 맞게 정렬하여 출력합니다. 우선 좌표를 정렬하는 기준은 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순으로 되어있습니다. vector 에 x좌표와 y좌표를 저장하고 algorithm의 sort를 이용하여 정렬한 후 .. 더보기
[C++]백준 1655번: 가운데를 말해요 문제 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 문제이해 첫째 줄에 정수의 개수(N)을 입력합니다. 다음 줄부터 N개의 수를 입력합니다. N번의 케이스 동안의 중간값을 N개의 줄을 통해 출력합니다. 문제 자체의 내용은 매우 간단하지만 시간 제한이 0.1초이기 때문에 무엇인가 색다른 방법이 필요합니다. 처음엔 priority_queue 한개에 자료를 넣고 중간 값을 찾아가 이를 vector에 저장하고 나중에 출력하는 방법을 .. 더보기
[C++]백준 5430번: AC 문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제이해 테스트 케이스의 개수가 입력으로 주어진다. 테스트 케이스만큼 수행할 함수와 배열에 들어있는 수의 개수, 배열이 입력된다. 함수가 수행된 결과를 출력한다. 만약 에러가 발생하는 경우에는 error를 출력한다. 명령어에는 R과 D가 있다. R은 전체 배열의 순서를 뒤바꾸는 것이고 D는 배열의 첫 번째 원소를 제거하는 것이다. 우선 R부터 봤을 때 전체 배열의 순서를 뒤바꾸는 함수인 reverse는 시간복잡도가 O(n)으로 R이 나올 때마다 r.. 더보기

LIST