Song[coding diary index]

Song 배열에 코딩 흔적 남겨두기

우선순위 큐 2

백준 1715번 카드 정렬하기(C++)

1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 문제 분석 문제에서는 '규칙'과 함께, 카드를 한묶음으로 만드는 '최소 비교 횟수'를 구하도록 한다. 💡규칙💡 여러 개의 카드 묶음을 뭉치기 위해서는, 두 묶음씩 뭉칠 수 있다. N개의 묶음이 시작이고, 이 중 2개의 묶음을 하나로 뭉쳤다면, 다시 N - 1개의 묶음에서 2개를 골라 뭉친다. 총 1개의 묶음이 완성될 때 까지 이 과정을 반복한다. 문제에서 말한 과정을 짧게 3가지 단계로 표현하였다. 결국 두 묶음씩 조합할 때의 조건이 중요한 거 같..

알고리즘 2024.01.19

백준 11286번 절댓값 힙(c++)

11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 분석 문제는 입력받는 숫자 중 절댓값이 가장 작은 숫자를, 만약 절댓값이 같다면 수가 가장 작은 수를 기준으로 정렬시키려 한다. 그리고 0을 입력받았을 때, 위의 조건에서 가장 앞에 정렬된 숫자를 출력하고 삭제한다. 결국 배열을 정렬시키는 정렬방식이 가장 핵심이라고 할 수 있다. 문제 풀이 첫 접근은 swap함수를 이용한 정렬이었다. 입력받은 숫자를 하나의 배열에 집어넣고, 집어넣은 숫자와 옆숫자와 서로의 절댓값을 비교하도록 했다. 위 ..

알고리즘 2023.09.21
LIST