본문 바로가기

분류 전체보기

(38)
[c++ | 백준] 15311번 약 팔기 [백준 15311번 약 팔기 문제]https://www.acmicpc.net/problem/15311       전체 풀이 코드#include using namespace std;int main(void){ cout    풀이 설명 1. 2000개의 약봉지로 100만개의 약 담기문제에서는 최대 2000개의 약봉지를 사용해서 동규가 원하는 100만개 이하의 약을 줘야한다고 합니다.즉 2000개의 약봉지를 이용해서 100만이라는 숫자를 만들 수 있어야 하는데, 이를 해결하기 위해서 100만이라는 숫자에 주목해 봅시다. 먼저 100만은 1000^2 입니다. 따라서 약봉지 1000개를 1000개의 약으로 채워 넣으면 일단 100만이라는 숫자를 만들 수 있게 됩니다.하지만 1, 10, 100의 자리 숫자를 ..
렌더링 파이프라인이란? 렌더링 파이프라인이란?컴퓨터 그래픽스에서 모델을 화면에 표시하기 위한 핵심 소프트웨어 구성 요소 이다.렌더링 엔진은 렌더링 파이프라인을 구현하고, 3D모델의 처리, 렌더링, 그래픽스 효과 및 최적화를 담당한다. 주요 기능1. 그래픽스 API와 상호 작용 가능 ( DX, OpenGL, Vulkan ) 2. 렌더링 파이프 라인을 구현 가능입력 어셈블리, 버텍스/기하/픽셀 쉐이더, 래스터 라이저, 출력 병합 등 3. 재질 및 라이팅조명, 그림자, 반사, 광택과 같은 라이팅 효과를 처리하고 3D모델의 재질을 관리한다. 4. 카메라 및 뷰포트 관리카메라의 시점을 관려하고 화면에 보이는 영역인 뷰포트를 설정하고 이를 통해 사용자에게 올바른 시각적 표현을 제공한다. 5. 충돌 감지몇몇 렌더링 엔진은 물리 엔진과 ..
[c++ | 백준] 1436번 영화감독 [백준 1436번 영화감독  문제]https://www.acmicpc.net/problem/1436       전체 풀이 코드#include #include using namespace std;int main(void){ int n, result = 665; string temp; cin >> n; while (true) { result++; temp = to_string(result); if (temp.find("666") != -1) { if (--n == 0) break; } } cout    풀이 설명 1. 브루트포스 알고리즘 이 문제는 브루트포스 알고리즘을 이용하여 풀이하면 되..
[c++ | 백준] 1003번 피보나치 함수 [백준 1003번 피보나치 함수 문제]https://www.acmicpc.net/problem/1003       전체 풀이 코드#include using namespace std;int fibo[41] = { 0, 1, 1 };int fibonacci(int n) { if (n > t; for (int i = 0; i > n; if (n == 0) { cout    풀이 설명 1. 일반적인 피보나치 함수로는 풀리지 않는다? 분명 나는 정석대로 풀었는데, 시간 초과를 보시고 블로그를 찾아오신 분들이 많으실 거라고 생각됩니다.이 문제는 숨겨져있는 규칙과 다이나믹프로그래밍을 적용해야만 풀리는 문제입니다. 먼저 다이나믹프로그래밍에 대해서 알고싶으시다면 밑..
[c++ | 백준] 11726번 2 x n 타일링 [백준 11726번 2 x n 타일링 문제]https://www.acmicpc.net/problem/11726       전체 풀이 코드#include using namespace std;long long dp[1001] = { 0,1,2};long long DP(long long n){ if (n > n; cout    풀이 설명 1. 전역 변수// dp로 구한 값을 저장하는 배열long long dp[1001] = { 0,1,2};  이제 부터 DP 문제를 풀어볼겁니다. main 함수 부터 설명드리도록 하겠습니다.  2. main 함수int main(void){ int n; cin >> n; cout 2 x n의 공간을 채워야 하는 타일의 개수를 10007로 나눈 나머..
[c++] 알고리즘 설계 기법 | DP(다이나믹 프로그래밍) [DP(다이나믹 프로그래밍, 동적 계획법)] 큰 문제에 대한 답을 얻기 위해 동일한 문제지만, 크기가 작은 문제들을 먼저 해결하는 방법이다.       항상 점화식을 사용한다.점화식 : 수열의 일반항을 한 개 이상의 앞선 항들을 이용하여 나타낸 식 즉 전에 구했던 것들을 통해서 현재 값을 구하는 방법이다.Memoization(메모이제이션) 기법중간 계산 결과들을 따로 저장해 두어서 중복 연산을 피하는 기법이다.피보나치 수열은 점화식이기 때문에 전에 구했던 값을 통해 현재 값을 구한다. 즉 메모이제이션 기법을 활용하여 점화식을 풀면 구했던 값을 또 구하는 것이 아닌 전에 구했던 값을 가져오면 되기 때문에 불필요한 연산을 줄일 수 있다!  Memoization(메모이제이션) 기법을 사용해서 구현한 피보나치 ..
[c++] 다익스트라 알고리즘 | 최단 경로 [가중치 그래프 (Weighted Graph)]네트워크(network)라고도 한다.간선에 가중치가 할당된 그래프이다.비용 (cost)가중치 (weight)길이 (length) 가중치 표현 방법인접 행렬 M[i][j]를 가중치를 위해 사용한다.추가적인 메모리 사용 없이 가중치를 표현할 수 있다.인접행렬 M을 이용한 그래프 표현에서 M[i][j]가 간선 (i, j)의 가중치 값을 나타낸다.만약 간선 (i, j)가 존재하지 않으면 M[i][j]가 매우 큰 값을 갖도록 한다. [최단 경로]네트워크에서 정점 u와 정점 v를 연결하는 경로 중에서 간선들의 가중치 합이 최소가 되는 경로이다.간성의 가중치는 비용, 거리, 시간 등이 있다. A에서 부터 모든 정점까지의 최단 경로를 구할 수 있는 방법은? =>  다익스트..
[c++ | 백준] 1012번 유기농 배추 [백준 1012번 유기농 배추 문제]https://www.acmicpc.net/problem/1012       전체 풀이 코드#include using namespace std;int testcase, m, n, num, x, y;int board[51][51];bool visited[51][51];int dx[] = { 1, 0, -1, 0 };int dy[] = { 0, 1, 0, -1 };void DFS(int y, int x){ visited[y][x] = true; for (int i = 0; i = n || nx >= m) continue; if (board[ny][nx] == 1 && visited[ny][nx] == false) DFS(ny, n..