분류 전체보기
[C++] cout 소수점 n자리까지 표시하기
일반적으로 아무 설정 없이 소수점을 표시하면 #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); double x = 3.333333333; cout
[골4] 4386 - 별자리 만들기
#include #include #include #include #pragma region 빠른 입출력 #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ #pragma endregion using namespace std; using dp = pair; #define MAX 101 #define x first #define y second vector star; vector coord; int parent[MAX]; double ans; int GetParent(int a) { return (parent[a] == a) ? a : parent[a] = GetParent(parent[a]); }..
[골5] 2166 - 다각형의 면적
#include #include #include #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ #define x first #define y second using namespace std; using dp = pair; double Calculate(double x1, double x2, double x3, double y1, double y2, double y3) { double res = x1 * y2 + x2 * y3 + x3 * y1; res -= x2 * y1 + x3 * y2 + x1 * y3; return res / 2; } int main() { FAST_IO(); int ..
1e9? 2e9? 알고리즘 문제해결
알고리즘 문제를 풀다 보면 1e9, 2e9라는 코드를 자주 볼 수 있다. 1e9 = 1*109 = 1000000000, 2e9 = 2*109 = 2000000000 위와 같이 간단하게 표현하는 방법이다. 특히, 2e9는 int 범위내에서 무한대 값을 나타내기 위해 사용하는 경우가 많다. 1e9? 2e9? 알고리즘 문제해결 (tistory.com)
[골5] 2467 - 용액
#include #include #include #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ using namespace std; int main() { FAST_IO(); int n; cin >> n ; vector v(n); for (int i = 0; i > v[i]; int s = 0, e = n - 1, min = 2e9; pair res; while (s < e) { int a = v[s], b = v[e]; int val = abs(a + b); if (val < min) { min = val; res = { a, b }; } if (a + b < ..
[골5] 19951 - 태상이의 훈련소 생활
#include #include #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ using namespace std; int n, m; int main() { FAST_IO(); cin >> n >> m; vector v(n + 1), s(n + 2); for (int i = 1; i > v[i]; // 입력 for (int i = 1; i > a >> b >> k; // 답 도출 s[a] += k; s[b + 1] -= k; } int sum = 0; for (int i = 1; i

누적 합 (Prefix Sum)
계산 양을 줄여서 시간적으로 많은 이득을 볼 수 있는 알고리즘이다. 1. 기본 원리 1) 1차원 배열 1차원 배열에서 i번째부터 j번째 인덱스까지 k를 더한 것을 기록하려면, 새로운 배열의 i번째 인덱스에 k를 더하고 j+1번째 인덱스에 k를 빼면 된다. 새로운 배열의 크기는 기존 배열 크기보다 하나 이상 크게 만든다. 예를 들어 크기가 5인 배열에서 0번째부터 2번째 인덱스까지 N을 빼고 싶다면 다음과 같이 누적 합 배열을 만든다. { -N, 0, 0, N, 0, 0 } 위 새로운 배열을 0번째부터 마지막 인덱스까지 누적 합을 계산하게 되면 다음과 같다. 추가로 1번째부터 2번째 인덱스까지 M을 더하고 싶다면 누적 합 배열에 값을 추가한다. { -N, -M, 0, N, M, 0 } 다시 0번째부터 마지..

[C/C++] 비트연산자 (&, |, ^, ~, <<, >>, and, or, xor, 비트 반전, 비트 이동)
1. & 연산자 & 연산은 두 개의 비트가 모두 1일 때 1을 반환하는 AND 연산을 한다. 따라서 & 연산자의 비트단위 연산의 결과는 다음과 같다. 위 연산의 결과 4의 비트는 다음과 같다. 00000000 00000000 00000000 00000100 즉 다음과 같은 연산과정을 거친다. 00000000 00000000 00000000 00001111 & 00000000 00000000 00000000 00010100 = 00000000 00000000 00000000 00000100 2. | 연산자 | 연산은 두 개의 비트 중 하나라도 1이면 1을 반환하는 OR 연산이다. 따라서 | 연산자의 비트단위 연산의 결과는 다음과 같다. 위 연산의 결과 31은 다음과 같은 연산과정을 거친다. 00000..
[골5] 24891 - 단어 마방진
#include #include #include #include #define FAST_IO() \ {\ ios::sync_with_stdio(false);\ cin.tie(NULL); \ cout.tie(NULL); \ }\ using namespace std; vector ans(20), s(20); vector vis(20); int l, n; void DFS(int cnt = 0) { if (cnt == l) { bool flag = true; for (int i = 0; i < l; i++) { for (int j = i + 1; j < l; j++) { if (flag) flag = (ans[i][j] == ans[j][i]); } } if (flag) { for (int i = 0; i < ..

프로그래밍 언어와 빌드 과정 [Build Process]
⦁ Build 란? 컴퓨터는 근본적으로는 0과 1밖에 모른다. 우리가 작성하는 코드들은 거의 대부분 고급언어를 사용하기 때문에 결국에는 컴퓨터(CPU)가 이해할 수 있도록 번역을 해주어야한다. (C, Java, C++ 등 어셈블리를 제외한 대부분 언어가 고급언어다.) 컴퓨터가 이해하는 언어를 기계어라고 하는데, 우리가 만든 소스 코드가 컴퓨터 입장에서는 해외판 책이 되는 것이고, 이 책을 기계어(machine code)로 번역하여 컴퓨터에서 이해할 수 있는, 즉 실행 가능한 파일로 만드는 과정을 빌드(Build) 라고 한다. ⦁ Build Process 1. Compile Type 이렇게 한 번에 번역하는 언어들을 보통 Compile Language 라고 하는데, 대표적으로 C, C++, Go 언어가 있..