operator ++ 를 오버로딩하는 구문이 두 군데가 있어서, ambiguity가 발생하기 때문에, 이를 구분하고자 dummy parameter, int를 넣은 것이다, 정도로 이해하였습니다. 그럼 실제 main 함수에서, 컴파일러는 어떻게 d++ 이 postfix overloading(line 19 ~ 24)에 해당하는지 알아낼 수 있나요? 반대로 ++d가 line 19 ~ 24로 가는 것이 아니고, line 12 ~ 16으로 가야 하는지 어떻게 알아내나요?
안녕하세요. 저는 set을 사용해서 문제를 해결했습니다. 그런데 시간을 더 줄여보려고 코드를 수정했는데 틀리다고 나옵니다. 수정한 코드가 왜 잘못되었는지 모르겠습니다. 알려주시면 감사하겠습니다. 수정한 코드 http://boj.kr/e812a45ff3e34a8e9a22e97cce7e113f 원래 코드 http://boj.kr/039878b27e594e0c90895f1414ab061d
안녕하세요. 강의 잘 수강하고 있습니다. 해설 강의 보기 전에 문제를 먼저 풀어봤는데 계속 틀렸다고 나옵니다. 반례를 찾지 못하겠습니다. 일단 제가 생각하기엔 알고리즘이 맞는 것 같고 해설 강의와도 사실상 똑같은 알고리즘입니다. 저는 홀수인 경우 짝수인 경우만 나눠서 짰는데 기본적인 원리는 똑같네요. 웬만한 반례를 찾아 돌려봐도 제대로 나오는데 백준은 자꾸 틀렸다고 하네요. http://boj.kr/c698570bbcae4b859fbfdf13b4fac684 뭐가 문제인지 모르겠습니다.
안녕하세요. 비트단위 연산자를 공부하던 중 궁금한 점이 생겼습니다. 왜 컴파일 했을 시, bitset<4>(0110 >> 2)가 0001이 아닌 0010이 나오는지 모르겠습니다. 알려주시면 정말 감사하겠습니다. #include <iostream> #include <bitset> using namespace std; int main() { cout << bitset<4>(0110 >> 2) << endl; }
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
// CP 생성 HANDLE iocpHandle = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); // WorkerThreads for (int32 i = 0; i < 5; i++) GThreadManager->Launch([=]() { WorkerThreadMain(iocpHandle); }); 각 워커 스레드는 별도의 iocpHandle을 사용해서 WorkerThreeadMain 함수를 실행하는 걸까요? iocpHandle 은 하나의 공용적인 큐 일까요?
#include <iostream> using namespace std; int main() { int x = 5; cout << (x % 2 == 0) ? "even" : "odd" << endl; } 안녕하세요. (x % 2 == 0) ? "even" : "odd"로 쓰면 컴파일 오류가 나는데, 이를 해결하려면 ((x % 2 == 0) ? "even" : "odd") 이렇게 괄호로 한 번 더 묶으면 된다고 하셨습니다. 연산자 우선순위 때문에 오류가 나는 거라고 하셨는데, 어떤 연산자들끼리 우선순위가 충돌하는 건지 궁금합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Overlapped Callback 방식에서 Session 구조체의 맨 첫 요소로 overlapped 를 넣어줘야하는 이유가 나중에 포인터로 변환하기 위해 메모리 구조상 넣는 거라고 하셨는데 이 부분이 잘 이해가 안가서 여쭤봅니다... 배열의 이름이 배열의 주소인 것처럼 구조체의 첫 요소가 구조체의 주소라서 그런건가요..??
테스트 케이스는 다 맞고 코드도 틀린부분이 어딘지 모르겠습니다 ㅠㅠ #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; }
안녕하세요 선생님 수업 듣는 중에 의문점이 생겨서 질문드립니다. 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; }
안녕하세요 큰돌님 코드 질문은 아니고 경우의 수 질문인데요 x, head1, head2 -> 3가지 x, eye -> 2가지 x, patns1, pant2 -> 3가지 아무것도 입지않는 경우의 수 1을 빼주는 것이 알몸인 상태인 경우를 빼주는 것이니 무조건 위의 경우에도 무조건 1만 빼줘서 3 x 2 x 3 -1 = 11 로 생각하는게 맞는건가요? 듣다보니 헷갈려서 질문 드려봅니다
http://boj.kr/4dc8f27d6a09443a916061fc1ac7800c 반례가 궁금합니다. dfs와 비트마스킹을 함께 사용해서 구현했고 테스트케이스 및 질문게시판의 반례도 다 통과했습니다만 1%대에서 바로 오답이 나옵니다. p.s. 비트마스킹 챕터에 있는 문제라 비트마스킹을 써봤는데, 굳이 이런 문제에 비트마스킹을 쓸 필요가 없었을까요? 앞으로 코테를 풀 때 메모리가 부족할 만큼 수의 범위가 크면 비트마스킹만 쓰면 될까요? 이 문제도 노드가 최대 1000개에 엣지가 1000000개 까지 가능하니 비트마스킹을 써야겠다고 생각습니다.
여러가지 조사를 해봤지만 해결되는것이 없어서 도움을 요청해봅니다.. 일단 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 - broken The 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) 추가를 해봤지만 작동이 되지 않았습니다.. 어떻게 해야 해결이 될지 알려주실 수 있을까요? ㅠㅠ
안녕하세요 큰돌선생님 매번 좋은 강의 감사합니다.. 문제를 풀다가 못풀어서 선생님 코드를 보고 강의를 시청하였는데요, 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() 함수를 호출할것 같은데 제가 어느부분을 이해하지 못하는 건가요??
https://www.acmicpc.net/source/share/c705165d9da648cab807897686bcb320 논리로직은 이해를 한거같은데 아직도 이분탐색에서 left와 right를 체크하는부분에서 mid값을 걸러내는부분이 잘 이해가가지않네요 right에서 mid값을 가지고오나 left를 체크할떄 가지고오나 결과는 같을거라고 생각했는데 아직도 이부분이 잘 이해가가지않습니다 ㅜㅜ
[게임 프로그래머 입문 올인원] 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 이되어 삭제된다 치면은 썡포인터와 다를게없어지는거아닌가욤?
제가 작성한 코드 http://boj.kr/7e8f78a1feb2433fa70b2a847a23cfff 첫 번째 질문 제가 작성한 코드는 반례처리를 하지 않았는데 통과됐습니다. 이 문제는 시작점과 도착점이 같은 경우에도 반례처리가 필요하지 않은 문제 아닌가요? 두 번째 질문 방문하지 않은 정점을 방문할 때, cnt[there] += cnt[here] 인 이유가 무엇인가요? 저는 cnt[there] = cnt[here] 라고 생각합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
제가 이해하기론 서버에서 플레이어를 생성하고 처음 네트워크 통신 간 세션에 클라이언트가 등록되었을 때 클라이언트와 서버에서 생성한 플레이어를 붙이는 것으로 이해했습니다. 혹시 그럼 처음 통신을 했을 때는 클라이언트가 서버에 보내는 패킷에 초기값을 전달 후 서버에서 설정해서 다시 패킷을 send 해주는 방식으로 이해했는데 제가 이해한 방식이 맞는 것인지 궁금합니다.