백준(C, C++) 40

백준 11659 구간 합 구하기4

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 1. 누적 합 알고리즘을 이용한다면 매우 쉬운 문제였습니다 #include #define fastio() ios::sync_with_stdio(0),cin.tie(nullptr),cout.tie(nullptr); using namespace std; int n, m, t1, t2; int arr[111111]; int acc[111111]; int main() { fasti..

백준 2357 최솟값과 최댓값 c++

https://www.acmicpc.net/problem/2357 2357번: 최솟값과 최댓값 N(1 ≤ N ≤ 100,000)개의 정수들이 있을 때, a번째 정수부터 b번째 정수까지 중에서 제일 작은 정수, 또는 제일 큰 정수를 찾는 것은 어려운 일이 아니다. 하지만 이와 같은 a, b의 쌍이 M(1 ≤ M ≤ 100 www.acmicpc.net 2개의 세그먼트 트리를 만들면 풀 수 있는 문제였습니다 #include #include #define fastio() ios::sync_with_stdio(0),cin.tie(nullptr),cout.tie(nullptr); using namespace std; typedef long long ll; ll n, m, from; ll maxarr[10000000..

백준 11505 구간 곱 구하기

https://www.acmicpc.net/problem/11505 11505번: 구간 곱 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 곱을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net 단순히 구간 합 세그먼트 트리에서 구간 곱 세그먼트트리로 바꾸는 문제입니다 https://wantchicken.tistory.com/46 세그먼트 트리의 개념 - c++ 코드: #include #include #define fastio() ios::sync_with_stdio(0),cin.tie(nullptr),cout.tie(null..

백준 15685 드래곤 커브 - [C/C++] 삼성 코딩테스트

https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 코드: #include #include #include #define fastio() ios::sync_with_stdio(0),cin.tie(nullptr),cout.tie(nullptr); using namespace std; int N; int map[222][222]; int dy[4] = {0, -1, 0, 1}; int dx[4] = {1, 0, -1, 0};..

세그먼트 트리 기초: 백준 2042 구간 합 구하기 [C/C++]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #include #include #define fastio() ios::sync_with_stdio(0),cin.tie(nullptr),cout.tie(nullptr); #define long long ll using namespace std; ll n, m, k, from; ll arr[11111111]; void update(ll location, ll v) { ll idx = location + from - 1; arr[idx] = v; for (ll i = idx / 2; i >=..

[C/C++] 백준 2586번 - 소방차, 다이나믹 프로그래밍-고급

https://www.acmicpc.net/problem/2586 2586번: 소방차 첫째 줄에는 펌프의 수를 나타내는 정수 P와 소방차의 수를 나타내는 정수 F가 주어진다. 1 ≤ P ≤ 100,000 이고 1 ≤ F ≤ 100,000 이며, P ≥ F 이다. 둘째 줄에는 펌프들의 위치를 나타내는 서로 다른 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include #define ll long long using namespace std; int n, m; ll p[101010]; ll f[101010]; bool dp[101010]; ll dy[101010][3]; ll solve() { ll res = 0; for (int i = 1; i abs(p[ub ..

[C/C++] 백준 1463번 - 1로 만들기, 다이나믹 프로그래밍(동적계획법)

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 완성된 코드: #include #include // min을 쓰기 위한 헤더 파일#define fastio() ios::sync_with_stdio(0),cin.tie(0); // 빠른 입출력을 위한 코드#define INF 100000000using namespace std;int dp[1111111]; // 이전에 나온 값을 기억할 배열, 전역변수 이므로 0으로 초기화 되어있다.int solve(int n, int cnt) { if (n == 1) return cnt; // n이 1이 된다면 cnt를 리턴한..

[C/C++] 백준 14500번 - 테트로미노, 삼성 코딩 테스트 문제를 두 가지 방법으로 풀어보자

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 매우 간단한 문제입니다. 1. 문제요약 테트로미노를 놓아서 나올 수 있는 최대값을 구하자 2. 생각의 흐름 그냥 다 하면 되겠는데? 3. 그래서 나온 코드 이후 개선된 코드가 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43..

[C/C++] 백준 1004번 - 어린 왕자, 새롭게 Class로 풀어보자

https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 클래스로 풀어보았습니다. 완성된 코드 #include #include using namespace std; static const auto fastio = []() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); return 0; }(); class space { int y1, x1,..