분류 전체보기(218)
-
[atcoder] Exawizards Programming Contest 2021(AtCoder Beginner Contest 222)
3 솔 https://atcoder.jp/contests/abc222 Exawizards Programming Contest 2021(AtCoder Beginner Contest 222) - AtCoder AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online. atcoder.jp 1. A - 아주 간단한 문제 : "%04d".. #include #include using namespace std; int main() { string s; cin>>s; for(int i = 0; i < 4-s.size();i++) { coutb; vector c(a..
2021.10.10 -
[백준][C++] 20036번 Ball Alignment (dp)
1. 문제 https://www.acmicpc.net/problem/20036 -> - 중력에 의하여 공하나를 제거할 시 공들은 중간으로 모이게 된다. - 그리고 뺀 공은 맨 왼쪽이나 맨 오른쪽에만 넣을 수 있다. - 이때 공을 빼는 최소 횟수를 구해야한다. 2. 풀이 - 먼저 같은 공을 두번이상 손을 대지 않는다는것을 눈치채야한다. (첫번째 공을 뺀 행동의 의미가 없어짐, 그러므로 1번 공을 빼는것이 최소가 된다.) - 한 공마다 최대 1번만 공을 건들 수 있으므로 - 적절히 공을 제거해줘야하는데, - 중간에 삽입 불가능하므로 - 나머지 공들을 "정렬된 부분"으로 만드는 방향으로 제거해줘야한다. - 그러므로 이 문제는 주어진 배열에서 가장 긴 정렬된 부분 수열을 구하는 문제로 변형할 수 있다. 가장 간..
2021.10.07 -
[codeforces] Codeforces Round #744 (Div. 3)
A. Casimir's String Solitaire - 수학 문제 - 주어진 문자열에서 아래의 두 연산중 하나를 수행한다. 임의의 A 와 B를 제거 임의의 B 와 C를 제거 - 이때 문자열을 ""로 만들 수 있으면 YES , 아니면 NO를 출력하는 문제이다. - 해결방법은 간단하다. - 문자열에서 ABC 각각의 개수를 세고 A + C = B 가 성립하면 ""로 만들 수 있다. 반성 - 주어진 입력의 크기를 보지 못하고 완전탐색으로 모든 경우의 수를 구하여 풀려고 했다. #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(..
2021.09.30 -
[백준] [C++] 1533번 길의 개수 (그래프 변환, 행렬 제곱)
1. 문제 https://www.acmicpc.net/problem/1533 1533번: 길의 개수 첫째 줄에 교차점의 개수 N이 주어진다. N은 10보다 작거나 같고, 시작점의 위치 S와 끝점의 위치 E, 그리고 정문이가 늦는 시간 T도 주어진다. S와 E는 N보다 작거나 같은 자연수이다. T는 1,000,000,000 www.acmicpc.net 2. 풀이 늦는 시간 T 동안 주어진 그래프에서 이동할 수 있는 길의 경우의 수 구하는 문제. 가중치가 1인 인접 행렬 그래프를 n번 제곱하면 (가중치가 없는) mat[i][j]의 값은 i 에서 j 로가는 경로중 n개의 간선이 있는 경로의 경우의 수 와같다. 따라서 주어진 그래프를 가중치가 1 인 인접행렬 그래프로 변환하고 T 제곱 하면 간선의 개수가 T인 ..
2021.09.18 -
[vk] Depth buffering
1. Introduction - geometry는 3D로 투영되지만, 여전히 평면이다. - 이번 챕터에서는 3D meshes을 위한 position에 z 좌표를 추가할것이다. - 이 3번째 좌표를 사용함으로써 현재 사각형 위에 사각형을 하나 더 배치하여 - geometry가 깊이별로 정렬되지 않을 때 발생하는 문제를 확인할 것이다. 2. 3D geometry - Vertex 구조체에서 position을 3D vector를 사용하도록 수정할것이다. - 그리고 VkVertexInputAttributeDescription 에 대응되는 format 또한 업데이트 시킬것이다. struct Vertex { glm::vec3 pos; glm::vec3 color; glm::vec2 texCoord; ... stati..
2021.09.04 -
[백준][C++] 4206번 피보나치 단어 (dp, kmp)
1. 문제 4206번: 피보나치 단어 (acmicpc.net) 2. 간단 풀이 이 문제는 입력의 크기를 제외하면 단순하다. fib[i] = fib[i-1] + fib[i-2] + mid 이 공식을 사용하여 중간에 걸친부분을 조사하여 새로운 패턴이 생기는지 확인만하면된다. 하지만 long long 타입의 크기의 문자열을 처리해야한다는것. 이를 그대로 처리하게되면 당연히 시간 초과 메모리 초과가 일어날것은 뻔하다. 그러므로 피보나치의 성질을 활용하여 다루는 문자열의 크기를 제한하고, kmp알고리즘을 사용하여 효율적으로 처리해야한다. 3. 풀이 피보나치 문자열이 일단 패턴보다 길어야 패턴이 보인다는것은 자명하다. 길이가 같거나 더 긴 첫번째 피보나치 문자열을 first 라고하고 다음 문자열을 second라하자..
2021.08.30