묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
map 자료구조의 시간복잡도
블로그에서 map 자료구조의 시간복잡도가 전부 nlogn이라고 써있던데, 이게 맞나요?찾아보니 해쉬맵 종류는 전부 O(1)을 갖고 트리 맵은 logn을 갖던데, nlogn이 어떻게 나오는건지 궁금합니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
20번 가위바위보 질문있습니다
처음에 아래와 같은 식으로 하드코딩 했는데, out으로 나오는 답이 메모장에 있는 답과 같은데 정답이 아니라고 떠서 질문 남깁니다.왜 틀린 건지 알 수 있을까요? #define CRTSECURE_NO_WARNINGS#include <stdio.h>int main(){ int n, input; int a[101], b[101]; scanf("%d", &n); for (int i = 0; i < n; ++i) { scanf("%d", &input); a[i] = input; } for (int i = 0; i < n; ++i) { scanf("%d", &input); b[i] = input; } for (int i = 0; i < n; ++i) { // a가 가위를 낸 경우 if (a[i] == 1) { if (b[i] == 1) { printf("D\n"); } else if (b[i] == 2) { printf("B\n"); } else { printf("A\n"); } } // a가 바위를 낸 경우 else if (a[i] == 2) { if (b[i] == 1) { printf("A\n"); } else if (b[i] == 2) { printf("D\n"); } else { printf("B\n"); } } // a가 보를 낸 경우 else if (a[i] == 3) { if (b[i] == 1) { printf("B\n"); } else if (b[i] == 2) { printf("A\n"); } else { printf("D\n"); } } } return 0;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요! 큰돌님 질문있습니다!
2-O문제에서 공백이 포함된 문자열들을 여러개 입력받을때 풀이에서는 bufferflush를 안했는데 안해도 되는 이유가 있을까요?? 궁금해서 질문드립니다!2-O 해설코드입니다!#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); while(true){ string s; getline(cin, s); if(s == ".") break; stack<int> stk; bool check = true; for(int i = 0; i < s.length(); i++){ if(s[i] == ')'){ if(stk.size() == 0 || stk.top() == '['){ check = false; break; }else{ stk.pop(); } } if(s[i] == ']'){ if(stk.size() == 0 || stk.top() == '('){ check = false; break; }else{ stk.pop(); } } if(s[i] == '(') stk.push(s[i]); if(s[i] == '[') stk.push(s[i]); } if(check && stk.size() == 0) cout << "yes\n"; else cout << "no\n"; } return 0;}
-
미해결홍정모의 따라하며 배우는 C++
transform_reduced 의 결과값이 틀립니다.
아무리 봐도 코드 오류가 잘 안보이네요,어느부분이 잘못되었는지 짚어주실수 있을까요?#include <iostream> #include <thread> #include <mutex> #include <utility> #include <vector> #include <atomic> #include <chrono> #include <numeric> #include <random> #include <execution> #include <future> using namespace std; auto dotProductNaive(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, unsigned long long & sum) { for(unsigned i = i_start; i < i_end; ++i) sum += v0[i] * v1[i]; return sum; } mutex mtx; auto dotProductLock(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, unsigned long long & sum) { for(unsigned i = i_start; i < i_end;++i) { std::scoped_lock lock(mtx); //c++17 sum += v0[i] * v1[i]; } return sum; } auto dotProductAtomic(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, atomic<unsigned long long>& sum) { for(unsigned i = i_start; i < i_end;++i) { sum += v0[i] * v1[i]; } } auto dotProductFuture(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end) { int sum = 0; for(unsigned i=i_start; i<i_end; ++i) { sum += v0[i] * v1[i]; } return sum; } int main() { const long long n_data = 100'000'000; const unsigned n_threads = 4; //init vectors std::vector<int> v0, v1; v0.reserve(n_data); v1.reserve(n_data); random_device seed; mt19937 engine(seed()); uniform_int_distribution<> uniformDist(1, 10); for(long long i = 0; i < n_data; ++i) { v0.push_back(uniformDist(engine)); v1.push_back(uniformDist(engine)); } cout << "std::inner_product" << endl; { const auto sta = chrono::steady_clock::now(); const auto sum = std::inner_product(v0.begin(), v0.end(), v1.begin(), 0ull);//unsigned long long const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } // cout << "Naive" << endl; // { // const auto sta = std::chrono::steady_clock::now(); // std::vector<thread> threads; // threads.resize(n_threads); // const unsigned n_per_thread = n_data / n_threads; // unsigned long long sum = 0; // for(unsigned t = 0; t < n_threads; ++t) // { // threads[t] = std::thread(dotProductNaive, std::ref(v0), // std::ref(v1), t*n_per_thread, (t+1)*n_per_thread, std::ref(sum)); // } // for(unsigned t = 0; t < n_threads; ++t) // threads[t].join(); // const auto dur = std::chrono::steady_clock::now() - sta; // cout << dur.count() << endl; // cout << sum << endl; // cout << endl; // } // cout << "Lock Guard" << endl; // { // const auto sta = std::chrono::steady_clock::now(); // unsigned long long sum = 0; // std::vector<thread> threads; // threads.resize(n_threads); // const unsigned n_per_thread = n_data / n_threads; // for(unsigned t = 0; t < n_threads; ++t) // { // threads[t] = std::thread(dotProductLock, std::ref(v0), // std::ref(v1), t*n_per_thread, (t+1)*n_per_thread, std::ref(sum)); // } // for(unsigned t = 0; t < n_threads; ++t) // threads[t].join(); // const chrono::duration<double> dur = std::chrono::steady_clock::now() - sta; // cout << dur.count() << endl; // cout << sum << endl; // cout << endl; // } // cout << "Atomic" << endl; // { // const auto sta = std::chrono::steady_clock::now(); // atomic<unsigned long long> sum = 0; // std::vector<thread> threads; // threads.resize(n_threads); // const unsigned n_per_thread = n_data / n_threads; // for(unsigned t = 0; t < n_threads; ++t) // { // threads[t] = std::thread(dotProductAtomic, std::ref(v0), // std::ref(v1), t*n_per_thread, (t+1)*n_per_thread, std::ref(sum)); // } // for(unsigned t = 0; t < n_threads; ++t) // threads[t].join(); // const chrono::duration<double> dur = chrono::steady_clock::now() - sta; // cout << dur.count() << endl; // cout << sum << endl; // cout << endl; // } // cout << "Future" << endl; // { // const auto sta = chrono::steady_clock::now(); // unsigned long long sum = 0; // vector<std::future<int>> futures; // futures.resize(n_threads); // const unsigned n_per_threads = n_data / n_threads; // for(unsigned t=0; t<n_threads; ++t) // { // futures[t] = std::async(dotProductFuture, std::ref(v0), std::ref(v1), // t*n_per_threads, (t+1)*n_per_threads); // } // for(unsigned t=0; t<n_threads; ++t) // sum += futures[t].get(); // const chrono::duration<double> dur = chrono::steady_clock::now() - sta; // cout << dur.count() << endl; // cout << sum << endl; // cout << endl; // } cout << "std::transform_reduce" << endl; { const auto sta = chrono::steady_clock::now(); const auto sum = std::transform_reduce(std::execution::par, v0.begin(), v0.end(), v1.begin(), 0ull); const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
그리디에 대해서 질문있습니다
강의를 보는데 이해가 안되는부분이 있어 질문드립니다그리디 문제의 경우는 실제로 해당경우에 대한 모든 경우의수가 대입된다면 임의의 해답논리를 이용해서 푼 경우가 진짜 정답은 아닐 수 있으나 문제에서 제시되는 테스트케이스는 해당 논리에대해서는 참 이라는 조건이 제시되는 문제로만 구성되있다고 생각하면 되는걸까요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
코드중 이해안가는부분이있습니다
Awake() :모든 오브젝트가 초기화되고 호출Start() :스크립트 인스턴스가 활성화된 경우에만 호출유니티 랑 비슷하게 하시려고 만드신 건 이해했습니다근데 생성자가 있는대 필요한 이유가 있을까요?생성 순서 문제 때문이라도 Awake나 Start 하나만 써도 될 것 같아서요
-
미해결홍정모의 따라하며 배우는 C++
Iterator를 사용하는 이유가 무엇인가요?
제가 생각해본 바로는, 추후 코드의 리팩토링 과정을 더 편하게 만들기 위해(?)같습니다. 많은 STL 의 컨테이너가 동일한 용법을 갖고 있으면 편할테니까요. 혹시 다른 이유가 더 있을까요?
-
해결됨홍정모의 따라하며 배우는 C++
lock guard를 사용한 쓰레드 연산결과가 inner_product 함수를 사용한 결과와 다릅니다.
오타가 없는 것 같은데 무슨 이유로 다른 값이 나오는지 알수가 없네요. 도움부탁드립니다.아래는 코드 전문입니다.#include <iostream> #include <thread> #include <mutex> #include <utility> #include <future> #include <vector> #include <atomic> #include <chrono> #include <numeric> #include <random> #include <execution> using namespace std; auto dotProductFuture(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end) { int sum = 0; for(unsigned i = i_start; i < i_end; ++i) { sum += v0[i] * v1[i]; } return sum; } auto dotProductNaive(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, unsigned long long & sum) { for(unsigned i = i_start; i < i_end; ++i) sum += v0[i] * v1[i]; return sum; } mutex mtx; auto dotProductLock(const vector<int>& v0, const vector<int>& v1, const unsigned i_start, const unsigned i_end, unsigned long long & sum) { for(unsigned i = i_start; i < i_end;++i) { std::scoped_lock lock(mtx); //c++17 sum += v0[i] * v1[i]; } } int main() { const long long n_data = 100'000'000; const unsigned n_threads = 4; //init vectors std::vector<int> v0, v1; v0.reserve(n_data); v1.reserve(n_data); random_device seed; mt19937 engine(seed()); uniform_int_distribution<> uniformDist(1, 10); for(long long i = 0; i < n_data; ++i) { v0.push_back(uniformDist(engine)); v1.push_back(uniformDist(engine)); } cout << "std::inner_product" << endl; { const auto sta = chrono::steady_clock::now(); const auto sum = std::inner_product(v0.begin(), v0.end(), v1.begin(), 0ull);//unsigned long long const chrono::duration<double> dur = chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } cout << "Naive" << endl; { const auto sta = std::chrono::steady_clock::now(); std::vector<thread> threads; threads.resize(n_threads); const unsigned n_per_thread = n_data / n_threads; unsigned long long sum = 0; for(unsigned t = 0; t < n_threads; ++t) { threads[t] = std::thread(dotProductNaive, std::ref(v0), std::ref(v1), t*n_per_thread, (t+1)*n_per_thread, std::ref(sum)); } for(unsigned t = 0; t < n_threads; ++t) threads[t].join(); const auto dur = std::chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } cout << "Lock Guard" << endl; { const auto sta = std::chrono::steady_clock::now(); unsigned long long sum = 0; std::vector<thread> threads; threads.resize(n_threads); const unsigned n_per_thread = n_data / n_threads; for(unsigned t = 0; t < n_threads; ++t) { threads[t] = std::thread(dotProductLock, std::ref(v0), std::ref(v1), t*n_per_thread, (t+1)*n_per_thread, std::ref(sum)); } // for(unsigned t = 0; t < n_threads; ++t) // threads[t].join(); const chrono::duration<double> dur = std::chrono::steady_clock::now() - sta; cout << dur.count() << endl; cout << sum << endl; cout << endl; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반례 찾아주세요ㅜㅜ
안녕하세요 강사님 강의 잘 듣고 있습니다.강사님 강의를 보기 전에 제가 스스로 풀었던 내용입니다.https://www.acmicpc.net/source/66606871문제의 예시와 첫 글자 z도 다 잘 출력 되었는데 어디서 실패하는건지 모르겠어서 여쭤봅니다...!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
lower_bound 에 교안과 다른 숫자로 변경하면
처음에는 교안과 동일한 숫자를 넣어봤다가 다르게 숫자를 넣어봤는데.. lower_bound는 그대로 2고 upper_bound는 2로 변해버립니다.. 왜그런걸까요? 그리고 주소값도 변하지가 않습니다.. 실행환경때문에 그런걸까요?그리고 typedef long long 11을 적으면 error: expected unqualified-id before numeric constant 라는 에러가 발생합니다..(그래서 아래 코드보면 안적혀있어요)그리고 제가 이해한것이 맞는지 알려주시면 감사하겠습니다. 교안기준 주소값을 기반으로 몇번째 요소인지를 뽑아낼 수 있다고 적혀있는데 그말은 곧 "0xd21518 - 0xd21510 = 8 이 나오는데, int형이니까 4바이트가 두개와 같으니 2번째 인덱스를 의미한다 " 라고 이해했습니다.. #include <bits/stdc++.h> using namespace std; int main(){ vector<int> a {1,2,5,6,7,3,3,3,4}; cout << lower_bound(a.begin(), a.end(), 3) - a.begin() << "\n"; cout << upper_bound(a.begin(), a.end(), 3) - a.begin() << "\n"; cout << &*lower_bound(a.begin(), a.end(), 3) << "\n"; cout << &*a.begin() << "\n"; cout << &*(a.begin() + 1) << "\n"; return 0; } /* 실행결과 2 2 0xe71d68 0xe71d60 0xe71d64 */
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
인벤토리 강의 예제 코드가 작동되지 않습니다.
이 상황과 관련해서 몇 가지 같이 질문드려봅니다...두 번째 for문(-> 주석 '//PK당해서 랜덤으로 일부 아이템 드랍' 부분)에서 스코프 내 지역변수가 최적화되어 사용할 수 없다는 메시지와 함께 내용을 알 수 없다고 나옵니다. 비슷한 경우를 포폴 작업하면서 몇 번 마주한 적이 있었는데요, 혹시 왜 이런 걸까요?_?(참고 사진)이 질문이 본론이기는 한데, if문으로 RemoveItem 호출 후 반환되는 bool값에서 계속 false가 반환되는 듯 합니다. 1번 질문에 남긴 이유 때문에 디버깅으로 정확한 원인을 파악하지 못했습니다(ㅠㅠ)그리고 같은 부분을 강의에서 코드가 정상 작동 되는지 확인해주셨었는데요(50:33), 이 때 if문 끝에 세미콜론이 붙어 조건문의 내용으로 적었던 출력 부분이 반드시 작동되도록 처리 되었더라구요.강의를 여러 번 반복해서 보며 제가 잘못 작성한 부분이 있는지 확인해보았으나 발견하지는 못했습니다.. 혹시 정상 작동 시키려면 어떻게 수정해야 하는 걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-C 인구이동 코드 질문
코드에 대한 질문이 있습니다.아래는 제가 짠 코드입니다.다른 부분은 볼 필요 없이 dfs(i, j) 이 부분에 대한 궁금증이 있습니다.저는 dfs(i, j) ... void dfs(int y, int x)이런식으로 짰는데강사님 코드를 보면 dfs(i, j, v) ... void dfs(int y, int x, vector<pair<int,int>> &v) 이런식으로 줬습니다.이렇게 짜야하는 이유가 궁금합니다. 이에 대한 제 예상 해답은벡터에 call by reference를 적용했기 때문인데 왜 call by reference를 적용해야하는지를 모르겠습니다.벡터에 call by reference를 적용한다고 치면 void dfs 안에 있는 다른 변수들(sum, cnt) 같은 변수들도 dfs(i, j, sum, cnt) 이런식으로 줘야하는것이 아닌가요?call by value, call by reference 부분 교안을 봐도 이해가 되지 않아서 질문드립니다. 자세한 답변 부탁드립니다#include <bits/stdc++.h> using namespace std; const int dy[4] = { -1 ,0, 1, 0 }; const int dx[4] = { 0, 1, 0, -1 }; int n, l, r, a[55][55], visited[55][55], sum, cnt; vector<pair<int, int>> v; void dfs(int y, int x) { visited[y][x] = 1; for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || ny >= n || nx < 0 || nx >= n) continue; if (visited[ny][nx]) continue; if (abs(a[y][x] - a[ny][nx]) >= l && abs(a[y][x] - a[ny][nx]) <= r) { v.push_back({ ny, nx }); sum += a[ny][nx]; cnt++; dfs(ny, nx); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> l >> r; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } int ret = 0; while (true) { int flag = 0; fill(&visited[0][0], &visited[0][0] + 55 * 55, 0); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (visited[i][j]) continue; v.clear(); visited[i][j] = 1; v.push_back({ i, j }); cnt = 1; sum = a[i][j]; //1. 왜 여기 dfs에서 dfs(i, j, v)로 줘야하는지? //2. 만약 이에 대한 해답이 call by reference 이면 //위에 따로 빼놓은 dfs 함수 부분에서 //sum, cnt 이런 변수들도 똑같이 dfs(i, j, sum, cnt) 이런식으로 넣어줘야 하는 것이 아닌지? dfs(i, j); if (cnt == 1) continue; for (pair<int, int> b : v) { a[b.first][b.second] = sum / cnt; flag = 1; } } } if (!flag) break; ret++; } cout << ret << '\n'; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
회사 필기시험 질문
안녕하세요. 제가 이번에 서류에 합격해서필기시험을 친다는데필기시험과 코딩테스트의 차이는 무엇인가요?시간은 1시간인데 뭐가 나올지 너무 두렵고 막막합니다
-
미해결홍정모의 따라하며 배우는 C++
3.6강의 16:49
if(x==1 && y++==2)에서++가 ==보다 우선순위가 높아y가 3이되고 2랑 같지않게되어서False이므로 중괄호안에 문장이 실행되지 않아야하는거아닌가요?제가 안에 문장넣엇는데 실행이되어서 헷갈리네요..
-
미해결홍정모의 따라하며 배우는 C++
강의 12.9 - 8:59 - std::vector에서 reference wrapper와 pointer 의 성능적인 차이
vector<Base*> vec;for(auto& el : vec)el->print();vector<reference_wrapper<Base>> vec;for(auto& el : vec)el.get().print();레퍼런스가 포인터보다 빠르지만 위에서는 get() 함수를 호출하니까 함수호출하면 스택프레임 전개되는데이러면 오히려 오버헤드가 더 커지는것 아닌가요?궁금해서 질문 올립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-V 문제 질문
안녕하세요 큰돌선생님 매번 좋은강의 감사합니다해당문제 풀이에서 다른부분은 모두 이해 가는데,make함수에서 if(interval == n) break; 부분이 왜 필요한지 잘 모르겠습니다. 어차피 for 루프가 끝나면 자동으로 종료되기때문에 필요없다고 생각하여 제출했는데 틀렸다고 나오네요 혹시 무엇때문에 필요한 것인가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - B stack 풀이 질문
안녕하세요, 강사님의 강의를 수강하며 코딩테스트를 준비하고 있는 수강생입니다.강사님의 좋은 코드 설명과 양질의 코드로 항상 감사하게 생각하고 있는데요,다름이 아니라 제가 5 - B 문제를 풀다가 질문이 생겨서 글을 올리게 되었습니다.저는 해당 <문자열 폭발> 문제를 읽자마자 '아 여느 괄호 연쇄 폭발 문제랑 비슷하구나' 라는 생각이 들어서스택으로 문제 풀이 가닥을 잡게 되었는데, 그 와중에 전과는 다르게 폭발하는 string의 길이가 길어 졌으니매번 탐색을 해주어야겠다, 시간 복잡도도 괜찮을 것 같다! 라는 생각에 코드를 작성해봤습니다.생각보다 정답 풀이가 저의 풀이와 비슷해서 기분도 좋았는데, 왠지 모르게 시간초과가 계속 발생합니다.<질문>어느 부분을 고치면 시간 초과를 없앨 수 있을까요?그리고 이러한 시간 초과를 겪지 않으려면 어떤 코딩 방식을 지향해야할까요? (이건 개인적으로 지금 발생하고 있는 문제가 제 코드 작성 습관과 관련이 있디고 생각해서 적었습니다.)#include<iostream> #include<stack> #include<queue> #include<vector> #include<string> #include<climits> #include<algorithm> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string str; cin >> str; string bomb; cin >> bomb; stack<char> s; int len = str.length(); int bomb_len = bomb.length(); for(int i = 0; i < len; i++) { char now = str[i]; // 폭탄을 확인할 만큼 stack이 큰지 확인 // 폭탄을 넣을 만큼 크지 않다면 그냥 stack에 문자 넣기 if(s.size() >= bomb_len - 1 && now == bomb[bomb_len - 1]) { // 폭탄 글자 길이 만큼 스택에서 글자 우선 뽑기 string token; token = token + now; for(int j = 1; j < bomb_len; j++) { token = token + s.top(); s.pop(); } reverse(token.begin(), token.end()); // 뽑은 문자열이 폭탄 글자인지 확인 // 폭탄이 아니라면 다시 넣어주고 폭탄이면 뺀 문자열 그냥 버림 if(token != bomb) { for(int j = 0; j < bomb_len; j++) { s.push(token[j]); } } } else { s.push(now); } } if(s.empty()) { cout << "FRULA"; } else { string answer; int ans_len = s.size(); for(int i = 0; i < ans_len; i++) { answer = answer + s.top(); s.pop(); } reverse(answer.begin(), answer.end()); cout << answer; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
file not found 에러 해결법
Mac 유저일 경우, 초반 컴파일러 설정에서 다음과 같이 에러가 뜰 수 있습니다. 저는 sudo 를 사용해도 에러가 뜨더군요ㅠㅠ구글링을 좀 하다보니 다음과 같이 해결방법을 찾게 되어 공유드립니다. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include이 파일 경로에 bits 디렉토리를 생성하고 똑같이 작성하면 문제없이 잘 작동합니다!
-
해결됨홍정모의 따라하며 배우는 C++
async1의 start출력의 endl가 동작하지 않습니다
안녕하세요,분명 async1 start 출력 시 endl을 해주었는데도 줄바꿈 적용이 되지 않는 이유를 잘 모르겠습니다.설명 부탁드려도 될까요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
강의에서 언급하시는 포폴 제작하는 과정이 포함되나요?
현재 강의에서 제작하고있는 프레임워크로 3D포폴을 만든다라는 언급이 종종 나오는데 그러한 과정도 이 강의에 포함이 되어있나요?