본문 바로가기

백준14

[백준/C++] 11286 절댓값 힙 우선순위 큐(priority_queue)를 사용하는 문제 입니다. 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 입력값이 0이 아니라면 추가하고. 입력값이 0이라면 추가된 값들중 절대값이 가장 작은 원소를 출력 후 제거합니다. 원소의 갯수가 없을경우에 0이 입력되면 0을 출력합니다. 우선순위큐 priority_queue를 사용하며 구조체 cmp 내부의 operator 함수를 통해서 정렬 구조를 만들어주고난뒤에 입력받은 것을 큐에 push 하여 넣어주고 입력값이 0이라면 큐가 비어있는지 확.. 2023. 8. 7.
[백준/C++] 1874 스택수열 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 이번 문제는 stack & vector 를 사용한 문제 입니다. 기본조건으로 오름차순의 수열을 만들기위하여 입력받은 n만큼의 입력을 반복 합니다. 스택의 top이 입력받은 m과 같다면 pop 시켜 ' - ' 를 벡터에 추가해주도록 합니다. 반대로 입력받은 m보다 작다면 스택에 push 시켜 ' + ' 를 벡터에 추가해주도록 합니다. 위의 두 경우를 만족시킬수 없을경우는 오름차순을 .. 2023. 6. 13.
[백준/C++] 1976 여행 가자 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 지난번에이어 이번에도 Union-Find 알고리즘을 이용해야하는 문제 입니다. 아직 Union-Find 알고리즘에 익숙하지않기때문에 참고 합니다. #include #include #include #include #include #define fastio cin.tie(0)->ios::sync_with_stdio(0); cout.tie(0); using namespace std; // 백준 1976번 여행 가자 ( Union - Find 문제 ) int n, m;.. 2023. 5. 30.
[백준/C++] 1717 집합의 표현 1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작 www.acmicpc.net 대표적인 Union Find 문제 라고 합니다. 해당 알고리즘에대해서 배운적이 없었기때문에 단순히 구조체 배열 구성후 변수 a는 실행조건으로 b, c 는 단순한 구조체 배열에 속한 변수로 하여 문제를 풀려했으나 실패. 다른 풀이를 참고 하도록 합니다. #include #define fastio cin.tie(0)->ios::sync_with_stdio(0); cout.tie(0); using namespace std; // .. 2023. 5. 24.
[백준/C++] 14888 연산자 끼워넣기 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 이번에는 못풀어서 해답을 찾아본 문제 입니다. 수열에 수를 입력받고 연산자의 갯수를 입력받은뒤 연산자 덧셈, 뺄셈, 곱셉, 나눗셈을 이용한 경우의 수중 연산결과 최대값, 최소값을 구하는 문제입니다. 찾아본 문자의 해답은 재귀를 통한 연산 설계 입니다. 천천히 보면서 이해하는데 집중해보려고 합니다. #include #include #include #include #include #define fastio cin.. 2023. 5. 21.
[백준/C++] 1912 연속합 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제의 내용 n개의 정수가 주어지고 연속되도록 나열된 정수들을 앞에서부터 순서대로 더하면서 연속적으로 더해졌을때 가장 큰 수를 구하는 문제 입니다. 연속된 숫자는 최소 1개이상 이어야 합니다. (즉, 본인의 숫자 하나만으로도 가장 클 수도 있다는 뜻 / 예제 3번처럼) 예제 1번을 보자면 제시된 정수 계산 [기존+현재] 현재 계산된값 현재까지 최대값 10 최최숫자이므로 10 10 10 -4 10 + (-4) 6 10 3 6 + 3 9 10 1 9 + 1 10 10 5 10.. 2023. 5. 18.