본문 바로가기

알고리즘 문제풀이291

[프로그래머스:고득점kit] 이중우선순위큐 https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 레벨: 3 문제 요약: 스트링을 입력받아서 - I 숫자: 삽입 - D -1 : 최솟값 삭제 - D 1 : 최댓값 삭제 를 진행한 후 [최댓값, 최솟값] 배열을 리턴한다. 없는 경우 [0,0]을 리턴한다. 문제 풀이: 제목이 우선순위큐인만큼 우선순위큐를 사용한다. 최대힙과 최소힙을 선언한 후 I가 들어온다면 힙 모두에 삽입을 한 후 숫자를 카운트한다. cnt를 사용해서 동기화를 진행한다. #include using namespace std; vector solution(vector operations) { vector answer; prio.. 2021. 9. 20.
[백준 5214] 환승 https://www.acmicpc.net/problem/5214 5214번: 환승 첫째 줄에 역의 수 N과 한 하이퍼튜브가 서로 연결하는 역의 개수 K, 하이퍼튜브의 개수 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ K, M ≤ 1000) 다음 M개 줄에는 하이퍼튜브의 정보가 한 줄에 하나씩 주어 www.acmicpc.net 느낌상 bfs를 사용해야 하는 것을 알겠으나 연결 그래프를 만들 때 모든 노드 각각에 대해 연결선을 만들면 시간 초과가 발생하는 문제이다. 이 때 사용하는 방법은 바로 더미노드를 만드는 것이다. 더미 노드를 만들어서 허브로 사용하여 노드를 연결한다. 1~n까지는 진짜 노드이고 n+1부터 더미 노드를 설정한다. 더미 노드의 경우 거리가 0으로 처리되게끔 한다. /* 환승 .. 2021. 7. 5.
[백준 14501] 퇴사 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net n=15라서 dfs와 dp모두 가능하다. 1번 접근 dfs 모든 경우의 수에 대해 최대 이익을 구하는 것이다. //브루트 포스 사용 #include #include #include #include using namespace std; int max_sum = -1; int n; struct Day { int during, val; }; vector tasks; void bruteforce(int cur_day, int val_sum, int val_cur) { if (cur_day == n + 1) { max_sum = max(max.. 2021. 7. 1.
[백준 1806] 부분합 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N R이 되면 합이 음수가 .. 2021. 6. 20.