묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Overlapped Callback - Session 구조체
Overlapped Callback 방식에서Session 구조체의 맨 첫 요소로 overlapped 를 넣어줘야하는 이유가 나중에 포인터로 변환하기 위해 메모리 구조상 넣는 거라고 하셨는데이 부분이 잘 이해가 안가서 여쭤봅니다... 배열의 이름이 배열의 주소인 것처럼 구조체의 첫 요소가 구조체의 주소라서 그런건가요..??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-B 맞왜틀???
테스트 케이스는 다 맞고코드도 틀린부분이 어딘지 모르겠습니다 ㅠㅠ#include <iostream> #include<string.h> using namespace std; const int MAX = 51; const int dy[4] = { -1,1,0,0 }; const int dx[4] = { 0,0,-1,1 }; int T, N, M, K, cnt; int adj[MAX][MAX]; bool visited[MAX][MAX]; void dfs(int y, int x) { visited[y][x] = true; for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || ny >= N || nx < 0 || ny >= M) continue; if (adj[ny][nx] == 0) continue; if (visited[ny][nx]) continue; dfs(ny, nx); } return; } int main() { cin >> T; for (int i = 0; i < T; i++) { cin >> M >> N >> K; cnt = 0; memset(visited, false, sizeof(visited)); memset(adj, 0, sizeof(adj)); for (int j = 0; j < K; j++) { int y, x; cin >> x >> y; adj[y][x] = 1; } for (int y = 0; y < N; y++) for (int x = 0; x < M; x++) { if (visited[y][x]) continue; if (adj[y][x] == 1) { dfs(y, x); cnt++; } } cout << cnt << '\n'; } return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-D 시간복잡도 관련 질문입니다
안녕하세요 선생님 수업 듣는 중에 의문점이 생겨서 질문드립니다.6-D(7795) 번 문제 같은 경우에는 입력값의 범위가 1~20000까지로 완전 탐색으로 풀게 된다면n^2의 시간복잡도를 가져 시간 초과가 날 줄 알았습니다.하지만 그렇게 풀어보니 시간 초과가 나지 않고 정상적으로 통과가 되네요어떤 이유 때문인지 궁금합니다!#include<bits/stdc++.h> using namespace std; int T, N, M, num; vector<int> A; vector<int> B; int main() { cin >> T; while (T--) { cin >> N >> M; A = vector<int>(N); B = vector<int>(M); for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i < M; i++) cin >> B[i]; sort(A.begin(), A.end()); sort(B.begin(), B.end()); int cnt = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { if (A[i] > B[j]) { cnt++; } else break; } } cout << cnt << "\n"; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
경우의 수 질문드립니다.
안녕하세요 큰돌님 코드 질문은 아니고 경우의 수 질문인데요x, head1, head2 -> 3가지x, eye -> 2가지x, patns1, pant2 -> 3가지 아무것도 입지않는 경우의 수 1을 빼주는 것이 알몸인 상태인 경우를 빼주는 것이니 무조건 위의 경우에도 무조건 1만 빼줘서3 x 2 x 3 -1 = 11 로 생각하는게 맞는건가요?듣다보니 헷갈려서 질문 드려봅니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반례 궁금합니다.
http://boj.kr/4dc8f27d6a09443a916061fc1ac7800c반례가 궁금합니다.dfs와 비트마스킹을 함께 사용해서 구현했고 테스트케이스 및 질문게시판의 반례도 다 통과했습니다만 1%대에서 바로 오답이 나옵니다. p.s. 비트마스킹 챕터에 있는 문제라 비트마스킹을 써봤는데, 굳이 이런 문제에 비트마스킹을 쓸 필요가 없었을까요? 앞으로 코테를 풀 때 메모리가 부족할 만큼 수의 범위가 크면 비트마스킹만 쓰면 될까요? 이 문제도 노드가 최대 1000개에 엣지가 1000000개 까지 가능하니 비트마스킹을 써야겠다고 생각습니다.
-
해결됨삼각형의 실전! CMake 초급
Xcode 빌드시스템 에서 빌드가 잘 되지 않는 문제가 있습니다.
여러가지 조사를 해봤지만 해결되는것이 없어서 도움을 요청해봅니다..일단 Xcode는 설치가 되어 있고, Xcode 버젼은 다음과 같습니다.xcode-select -p > /Applications/Xcode.app/Contents/Developer xcodebuild -version Xcode 15.0.1 Build version 15A507작업 위치는 외장 디스크를 터미널로 접근해서 작업을 했습니다.ShellScript로 CMake 세팅을 했고요bash ~/CMakeInitTemplate.sh Phello-cmake 를 실행하면#!/bin/bash # 명령어 결과물을 변수로 나타내기 CurPath=$(pwd) ProjectName="$1" # 현재 주소를 사용해서 concatenate하기 if [ -z "$ProjectName" ]; then echo "Type ProjectName by argument" echo "Like bash ~/CMakeInitTemplate [ProjectName]" exit 0 fi mkdir "${ProjectName}" cd "${ProjectName}" || exit # 파일이 있는지 없는지 확인하기 # https://co-no.tistory.com/109 # if [ -e "$FILE" ]; then # echo "File Exists" # else # echo "No Matching FIle" # fi # 파일 쓰기 # https://stackoverflow.com/questions/11162406/open-and-write-data-to-text-file-using-bash Create_CMakeLists_Text() { touch CMakeLists.txt echo "# 최소 CMkae버젼 요구사항 명시 cmake_minimum_required(VERSION 3.0.0) # 프로젝트 이름 지정 project(${ProjectName}) # 타겟 프로그램 정의 add_executable(${ProjectName} src/main.cpp) # 조건문 if(BUILD_TESTING) # 메세지 출력 message('Hello Test') endif()" >> CMakeLists.txt } # 인프런 삼각형 GNU 폴더 구조 Set_CMake_FolderStructure() { mkdir bin # 1. 동적 라이브러리와 실행파일 : bin mkdir data # 2. 데이터와 에셋 : data mkdir demo # 3. 데모 : demo mkdir doc # 4. 문서 : doc mkdir include # 5. 헤더파일 : include mkdir lib # 6. 라이브러리 : lib mkdir src # 7. 소스파일 : src touch src/main.cpp mkdir test # 8. 테스트 : test } Create_CMakeLists_Text Set_CMake_FolderStructure cd ../ CMakeLits.txt 는 처음에 다음과 같이 실습을 따라했습니다.다만, 저만의 프로젝트 이름을 설정하기위해 "Phello-cmake"로 이름을 지었구요.# 최소 CMkae버젼 요구사항 명시 cmake_minimum_required(VERSION 3.0.0...3.27.7) # 프로젝트 이름 지정 project(Phello-cmake) # 타겟 프로그램 정의 add_executable(Phello-cmake src/main.cpp) # 조건문 if(BUILD_TESTING) # 메세지 출력 message('Hello Test') endif() cmake -G "Unix Makefiles" -B build-make와 같이Makefiles를 빌드시스템을 명시하고 빌드할때는 문제가 없이build-make 파일이 잘 생깁니다.다만,cmake -G "Xcode" -B build-xcode 실행할때 다음과 같은cmake -G "Xcode" -B build-xcode -- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error at CMakeLists.txt:6 (project): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:6 (project): No CMAKE_CXX_COMPILER could be found. -- Configuring incomplete, errors occurred! 이 에러를 봤을때, 컴파일러를 명시하면 되겠다 생각하고다음과 같이 컴파일러를 명시했습니다.# 최소 CMkae버젼 요구사항 명시 cmake_minimum_required(VERSION 3.0.0...3.27.7) # set(CMAKE_C_COMPILER /usr/bin/clang) set(CMAKE_CXX_COMPILER /usr/bin/clang++) # 프로젝트 이름 지정 project(Phello-cmake) # 타겟 프로그램 정의 add_executable(Phello-cmake src/main.cpp) # 조건문 if(BUILD_TESTING) # 메세지 출력 message('Hello Test') endif() 그러나 다음과 같이Check for working C compiler: /usr/bin/clang - brokenThe C compiler"/usr/bin/clang"is not able to compile a simple test program.과 같은 이유로 실습진행이 막혔습니다.cmake -G "Xcode" -B build-xcode -- The C compiler identification is unknown -- The CXX compiler identification is unknown -- Detecting C compiler ABI info -- Detecting C compiler ABI info - failed -- Check for working C compiler: /usr/bin/clang -- Check for working C compiler: /usr/bin/clang - broken CMake Error at /opt/homebrew/Cellar/cmake/3.27.7/share/cmake/Modules/CMakeTestCCompiler.cmake:67 (message): The C compiler "/usr/bin/clang" is not able to compile a simple test program. It fails with the following output: Change Dir: '/Volumes/Transcend/개발 자료/Markdown/SelfStudy/Doc/Cpp/CMake/실습/Phello-cmake/build-xcode/CMakeFiles/CMakeScratch/TryCompile-Qo6pMj' Run Build Command(s): /usr/bin/xcodebuild -project CMAKE_TRY_COMPILE.xcodeproj build -target cmTC_2733e -parallelizeTargets -configuration Debug -hideShellScriptEnvironment Command line invocation: /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project CMAKE_TRY_COMPILE.xcodeproj build -target cmTC_2733e -parallelizeTargets -configuration Debug -hideShellScriptEnvironment User defaults from command line: HideShellScriptEnvironment = YES IDEPackageSupportUseBuiltinSCM = YES 2023-10-27 13:21:07.547 xcodebuild[8028:99890] Writing error result bundle to /var/folders/yc/p3zthqjj70b5_p976b68c9rr0000gn/T/ResultBundle_2023-27-10_13-21-0007.xcresult xcodebuild: error: 'CMAKE_TRY_COMPILE.xcodeproj' does not exist. CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:10 (project) 그래서 두번쨰로 환경변수를 설정했습니다./* ~/.zshrc */ : export CC=/usr/bin/clang export CXX=/usr/bin/clang++ autoload -Uz compinit && compinit bindkey '^I' complete-word zstyle -e ':completion:*' command-path 'reply=( "$PWD/bin" "$path[@]" )' typeset -U PATH path : 그럼에도 여전히 빌드가 되지 않고, 마지막으로 Xcode SDK 경로 설정까지 해/* ~/.zshrc */ export SDKROOT=$(xcrun --sdk macosx --show-sdk-path) 추가를 해봤지만 작동이 되지 않았습니다..어떻게 해야 해결이 될지 알려주실 수 있을까요? ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-B 문제 질문
안녕하세요 큰돌선생님 매번 좋은 강의 감사합니다.. 문제를 풀다가 못풀어서 선생님 코드를 보고 강의를 시청하였는데요, rpg함수는 dp배열을 갱신하는 재귀함수인데 기저사례가 없는 이유가 궁금합니다. 아직 제가 코드를 완전히 이해하지 못하는것 같은데, 제 생각으로는 선생님코드 for(int p = 0; p <= pnt; p++){ int nextSTR = min(1000, STR + p); int nextINT = min(1000, INT + pnt - p); ret = max(ret, rpg(nextSTR, nextINT)); }이 부분에서 pnt가 0이더라도 계속 rpg() 함수를 호출할것 같은데 제가 어느부분을 이해하지 못하는 건가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-j 범위체크 조건 질문드립니다
https://www.acmicpc.net/source/share/c705165d9da648cab807897686bcb320논리로직은 이해를 한거같은데 아직도 이분탐색에서 left와 right를 체크하는부분에서 mid값을 걸러내는부분이 잘 이해가가지않네요 right에서 mid값을 가지고오나 left를 체크할떄 가지고오나 결과는 같을거라고 생각했는데 아직도 이부분이 잘 이해가가지않습니다 ㅜㅜ
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
winapi object2 강의중에
안녕하세요objectmanger 에서 벡터를 참조가아닌복사방식으로 가져와서 반복문을 돌며업데이트를 시켜주면 문제가되지않는것 까진 이해가 됩니다 근데 render 할때는 복사방식아닌 참조로 가져오는데 , 즉 원본을 가져와서 렌더링을 해주는데업데이트부분에서 스페이스바를 눌러 미사일을 추가하게되면 , 미사일 객체가 원본벡터안에 추가되어 들어가게 되어 렌더링할때도 영향을 받을거같은데 어째서 렌더링의 반복문 루프에는 참조값으로 받아와도 문제가없는지 궁금합니다
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
스마트포인터와 벡터와의 함께사용 ?
vector<shared_ptr<object>> v;라는것을 사용했을때 , shared_ptr 은 생명주기가 다하면 알아서 자동으로 소멸되는데vector 안에 object 를 넣게되면은 object 의 생명주기 가 연장되는건가요 ?만약에 생명주기가 연장되었다고 했을때vector<shared_ptr<Object>>& v = ObjectManager::GetInstance()->Get_Object();for (int i = 0; i < v.size(); ++i){v[i]->Update();}위처럼 벡터의 참조값을 를 가져와서update 도중 vector 안에 원소를 reset 하여 참조카운트가 0 이되어 삭제된다 치면은썡포인터와 다를게없어지는거아닌가욤?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반례에 대해서 질문드립니다
제가 작성한 코드http://boj.kr/7e8f78a1feb2433fa70b2a847a23cfff 첫 번째 질문제가 작성한 코드는 반례처리를 하지 않았는데 통과됐습니다.이 문제는 시작점과 도착점이 같은 경우에도 반례처리가 필요하지 않은 문제 아닌가요? 두 번째 질문방문하지 않은 정점을 방문할 때, cnt[there] += cnt[here]인 이유가 무엇인가요?저는 cnt[there] = cnt[here] 라고 생각합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
온라인게임 제작 파트를 공부 중 궁금한 것이 있습니다.
제가 이해하기론 서버에서 플레이어를 생성하고 처음 네트워크 통신 간 세션에 클라이언트가 등록되었을 때 클라이언트와 서버에서 생성한 플레이어를 붙이는 것으로 이해했습니다. 혹시 그럼 처음 통신을 했을 때는 클라이언트가 서버에 보내는 패킷에 초기값을 전달 후 서버에서 설정해서 다시 패킷을 send 해주는 방식으로 이해했는데 제가 이해한 방식이 맞는 것인지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-J 질문 드립니다.
#include<iostream> #include<algorithm> #include<stack> using namespace std; typedef long long ll; ll n, m, ans, last_su; ll a[10004]; int check(ll mid){ ll cnt =0; for(int i=0; i<m; i++){ cnt += mid / a[i] + 1; } return cnt >= n; } ll last_check(){ ll cnt=0; for(int i=0; i<m; i++){ cnt += (ans-1) / a[i] + 1; } return n - cnt; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i=0; i<m; i++){ cin >> a[i]; } // 이 부분 ll l=0, r=6*1e10+4; while(l <= r){ ll mid = (l+r)/2; if(check(mid)){ r = mid-1; ans = mid; } else{ l = mid+1; } } if(ans){ last_su = last_check(); }else{ cout << n << '\n'; return 0; } vector<ll> v; for(int i=0; i<m; i++){ if(ans % a[i] == 0){ v.push_back(i+1); } } cout << v[last_su-1] << '\n'; } 다른 부분은 아니고 위의 코드를 제출 했을 때 정상적으로 맞았다고 나오는데, 시험삼아 while(l<=r) 위의 줄에서, 이분탐새하기 직전 l과 r을 선언하는 줄에서r = 1e18로 정의하였을 때 오답이 나옵니다.1e18도 long long의 범위 이내인데 어째서 오답이 나오는지 모르겠습니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
사전에 들어야 할 강의
강의마다 계속 "WinAPI 강의에서 배웠다" 라고 말씀을 하시면서 진행을 하시는데, 혹시 해당 강의 보기전에 WinAPI 강의를 사전에 봐야했던건가요 ?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과
안녕하세요, 시간초과로 통과하지 못해서 질문드립니다.http://boj.kr/c89e043975f349bbb7a4066422235fc0이전에 단순히 dfs만 써서 풀었을 때와 로직은 동일합니다. 다만 이번엔 visited를 2차원 벡터가 아닌 int형 변수 하나로 처리했고 방문하는 경우엔 | 연산으로 비트를 켜줬고 방문을 마치고 나선 & ~(1<<idx) 와 같이 비트를 꺼줬습니다.선생님의 코드와 제 코드의 함수 호출을 비교해보니 예제의 경우에선 함수 호출 횟수도 동일했습니다. 그런데 시간초과가 생기는 이유는 무엇일까요?
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
T-Pose Local에서 Animation-Pose Global로 변환
애니메이션 강의를 듣던 도중 T-Pose의 Global->Local 행렬에서 Animation-Pose의 Local->Global 행렬을 곱해주어 Vertex의 좌표를 애니메이션 기준으로 바꾸어 주는 부분이 이해가 가지않아 질문드립니다.가장 마지막줄인 invGlobal이 T-Pose의 Global->Local 행렬이고 tempAnimBoneTransforms[b]가 Animation-Pose의 Local->Global 행렬인데 저 두 행렬에 어떠한 상관관계도 없다고 생각되는데 단지 이렇게 곱해주기만 한다고 해서 T-Pose의 Global이 어떻게 Animation-Pose의 Global로 변환이 될 수 있나요?제가 이러한 의문을 제기하는 이유은 두가지 입니다.1. 두 행렬이 동일한 Bone을 기준으로 변환이 되는 행렬들이라고 해도 Animation-Pose에서는 그 Bone이 움직여서 만들어진 행렬이기 때문에 동일한 좌표계라고 생각할수 없다.2. 지금까지 T-Pose의 Local->Global 또는 Animation-Pose의 Local->Global로 변환이 되는 행렬들은 전부 자신과 부모간의 계층구조에 의해서 좌표값이 상대적으로 구성된 아이들이였는데 사진에서 나온 InvGlobal과 tempAnimBoneTransforms[b]는 계층관계도 있지 않습니다.글이 길어서 죄송합니다 계속 생각해봐도 잘 이해가 가지 않아 질문드립니다.ㅜ
-
미해결홍정모의 따라하며 배우는 C++
함수포인터가 람다와 비슷한 개념인가요??
동작을 갖는 변수라는 점에서 자바의 람다와 동일한 개념인것 같다고 생각되는데 맞나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-J 왜 왼쪽부터 하면 틀리나요? ㅠㅠ
공유 소스 보기 (acmicpc.net)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-G 조건체크에서 질문이있습니다
http://boj.kr/3aa1410045524133b6e2b5ea6da1bcce현재 해당코드를 통해서 정답은 맞췄는데 제가생각했던건 MID-1, MID+1로 조건탐색을하고 left <= right 조건을 통해서 left가 조건탐색이 끝났을때 기준으로 left가 정답이라고 생각하고 이때 left가 max조건을 넘겨버리면 체크하는걸로 해결했는데 설명코드에서 mid를 ret으로 체크되는부분이 잘 이해가가지않아 질문을남깁니다 항상감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-E 끝에서 return 1하는건 알겠는데 dp배열을 초기화 안해도 되나요?
왜 안해도 결과가 잘 나오는지 궁금하네요이전 테스트 케이스 결과가 dp에 반영되어있지않나요?테스트 케이스끼리도 같은 구조가 반복되어서 dp를 초기화 안해도 되는건가요