묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨삼각형의 실전! CMake 초급
CheckIncludeFileCXX 모듈 질문
안녕하세요? 강의 3-4 Fetch Content 부분에서 질문드립니다.check_include_file_cxx 모듈은 find_package() 커맨드와 동일한 역할을 하나요?# 필요한 패키지 찾기 find_package(fmt CONFIG REQUIRED)# C++ 파일이 있는지 검사 check_include_file_cxx("filesystem" CXX_FILESYSTEM_HAVE_HEADER) # 파일이 없는 경우 메세지 출력 if(NOT CXX_FILESYSTEM_HAVE_HEADER) message(STATUS "Oh no! can't use filesystem!") endif()
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
캐스팅 질문
Knight* k = new Knight();Player* p = k;이 코드가 명시적으로 타입변환을 해주지않아도 나이트는 플레이어다 라는게 자연스러워서 된다는건 이해가 되었습니다 그런데 근데 코드로 표현할떄 p포인터는 k의 주소값을 가리키는데 k의 주소값이 클래스타입인데 그러면 p(플레이어)는 나이트다 라는 말이 되는거 아닌가요? 이게 코드로 표현할려니 너무 헷갈리는데 혹시 각 코드마다 의미를 알려주실 수 있으실까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F 질문입니다 :) '0'을 빼주는 이유를 잘 모르겠습니다.
안녕하세요 선생님 🙂문제 풀이 중 이해가 되지 않는 부분이 있어서 질문드립니다.선생님께서는 입력받은 문자열 중 숫자는 vector<int> num에, 연산자는 vector<char> oper에 저장하셨는데요, 숫자 저장 방식이 이해가 되지 않습니다.for (int i = 0; i < N; i++)if (i % 2 == 0) num.push_back(s[i] - '0');여기서 숫자를 vector에 넣을 때마다 '0'을 빼는 이유가 무엇인지 잘 모르겠습니다 ㅠㅠ문자열에서 마지막 공백 문자열('\0')을 빼야 하는 것은 알고 있지만, 이건 공백 문자열도 아닐 뿐더러 push_back마다 빼주는게 이해가 되질 않습니다.추가로, go함수 안에서if (here + 2 <= num.size() - 1)에서 이 경우를 왜 here + 2로 하는지 설명해주시면 감사하겠습니다..!!
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 루키스님 메모리 릭 관련해서 질문드립니다.
마지막 업로드 파일 기준으로 메모리 릭이 발생되는데요. 서버가 열리지 않았을땐 발생하지 않아서 서버와 연결하는 부분인것 같았고 구글 프로토퍼프때문인가 싶어 검색하여 게임 소멸자에google::protobuf::ShutdownProtobufLibrary();이 구문을 추가했더니 조금 릭이 줄긴했지만 여전히 메모리 릭이 발생합니다. 게임세션이나 서비스가 상호참조되어 스마트 포인터가 해제가 안되나 해서 열심히 찾아봤지만 그부분 문제가 아닌것 같더라구요..어느 부분에서 발생하고 어떻게 고쳐야 하는지 알려주시면 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D에서 일단 VScode에서는 잘 나오는데 코테에 올리면 틀리다고 나옵니다
처음에 reverse를 생각하지 않고 처음에 바로 뛰어들어서 풀었는데 정작 코테 사이트에 올려서 살펴 보면은 한 94퍼 정도 채점하다가 바로 틀리다고 나옵니다.제가 신경을 쓰지 못한 부분이나 또는 제대로 초기화가 안되어서 그런건지 알고싶습니다.http://boj.kr/ebee0785d4f24afda72c41c59ccb5596
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 런타임 에러 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/64fef1f0d3504d18ae0a5b33d0b81a25안녕하세요! 온라인 C++ 컴파일러에서 돌려본 결과 다른 문자열에서는 정상적으로 출력되지만 "A rope may form )( a trail in a maze." 해당 문자열에서만 아무것도 출력이 되지 않습니다.제 생각으론 스택에 ) ( 두개가 남아 스택 사이즈가 0이 아니기에 no를 출력해야 하지만 그렇지 않아 질문드립니다...
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
암시적/명시적 생성자 쓸 때 주의할 점 공유
explicit을 붙였다고 방심할 수 없네요.. type이 다른 암시적/명시적 생성자가 섞여 있을 때 실수할 수 있으니 주의하세요위와 같이 'int형 암시적 타입변환 생성자'와 'float형 명시적 타입변환 생성자'를 만들었습니다.원래 k7 생성 시, Knight k7(1.76f);를 사용해야하지만, 이 코드대로 실행 시 k7과 HelloKnight(8.7f)이 아무 문제 없이 생성/실행됩니다.어셈블리를 까보니 'int형 암시적 생성자'를 생성자로 사용하네요. 컴파일러가 'float형 암시적 생성자'를 찾으려다 못찾으니, 강제로 int로 형변환하여 'int형 암시적 생성자'를 사용한 겁니다.명시적 생성자를 써야하는데( Knight k7(1.76f) ), 인간의 실수로 인해 예상치 못한 강제 형변환을 경험할 수 있으니 주의하세요~
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
.end()에 대해서
안녕하세요컨테이너의 끝 값 다음의 위치를 알려주는 함수로 .end()를 사용한다고 알 고 있었는데,교안 p 104에서는 .end()가 컨테이너의 끝 다음의 값이 아닌 끝 값을 가리키는 그림으로 보여지는데요.혹시 이부분은 그림이 잘못된것일까요?
-
미해결홍정모의 따라하며 배우는 C++
출력되는게 100이 아니던데
#include <iostream>int main(){ int x; x = '100'; std::cout << x << std::endl; return 0; } 무엇인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 질문이요
http://boj.kr/79ba1593f25043e8bc479c1ec621f4ecvscode, dev c++에서는 출력이 잘되는데백준에서는 계속 런타임에러가 뜨네요어떤게 문제인지 잘 모르겠습니다a는 측정한 온도의 배열이고p는 쿼리합 배열s는 인접한 k개의 합 배열이고각각 구한 다음에 s배열의 요소중 최대값을 출력하도록 했습니다.1. 런타임에러가 왜 뜨는지2. 강의의 코드에서 psum의 크기가 100001로 선언되어 있는데 psum 배열이 실질적으로 1부터 시작하기 때문에 n이 10만일 경우 psum[100000]을 써야해서 100001로 선언하신게 맞는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
prev_permutation(,)
안녕하세요. 위의 사진은 강의 교안 158p의 순열에 관한 설명의 일부분입니다. 마지막 줄에 '순열을 시작할 범위의 첫 번째 주소, 그리고 포함되지 않는 마지막 주소를 넣어서 만듭니다.'라고 되어있는데요. 이때 말하는 주소라는 말이 헷갈립니다. 검색해보니 단순한 순열의 시작과 끝을 말한다는데 주소라는 말을 사용한 것에서 포인터를 말하는 것인가 헷갈립니다. 인자가 위치 주소인 포인터를 말하는 것인지 아니면 단순 위치(요소)를 말하는 것인지 궁금합니다.
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
서버 허락 후 움직이는 모델로 만들 때 궁금한 것이 있습니다.
안녕하세요!이동할 때 서버에 움직여도 되는지 묻고, 대답이 오면 그때 움직이는 방식으로 만든다고 했을 때,SetDir, SetState같은 것들도 위와 같은 방식을 취하는 게 좋을까요?이동은 선 보고 후 허락이 오면 이동하는 방식,SetDir과 SetState는 강의에서처럼 먼저 Set하고 서버에 보고하는 방식으로 코드를 짰는데이게 뭔가 흐름이 꼬이는 부분이 있는 것 같아요.두 개를 하나의 방식으로 통일하는 게 좋을지,보통 선 보고 후 허락이 오면 이동하는 방식을 취할 때SetDir, SetState같은 것들도 똑같이 허락이 오면 바뀌는 방식으로 하는지 궁금합니다.감사합니다. 강의 잘 보고 있습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
memset 사용법
교안 공부를 하다가 질문이 있어. 이곳에 남깁니다.a로 초기화를 하기위해서 똑같이 따라쳤는데 출력값이 a가 아닌 이상한 숫자가 나옵니다. 이것은 왜그런것일까요..?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4주차는 개념강의만 들어도 괜찮을까요?
오랜시간 고민하다 강의를 보면서 힌트를 받아 4-A를 풀었습니다.허나 정말 빠르게 취준을 목표로 삼고있다면 비트마스킹은 스킵해도 될까요? 선택과 집중을 하고싶습니다,,물론 다 알아가면 좋지만 bfs나 dfs나 dp같은 문제들을 더 풀어보는게 좋을지 비트마스킹은 간단하게 알고 지나가도 괜찮은지 궁금합니다..항상 좋은 강의 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 무엇이 잘못되었을까요?
예제는 다 통과하는데 제출하면 틀렸다고 나오네요..bfs를 통해 풀었는데 뭐가 문제인지 잘 모르겠습니다./****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> #include <vector> #include <queue> std::vector<int> tree[50]; void bfs(const int start, const int removeNumber) { bool visited[50] = {false, }; std::queue<int> que; que.push(start); visited[start] = true; int curr = 0; int count = 0; while(que.empty() == false) { curr = que.front(); que.pop(); for (int i = 0; i < tree[curr].size(); ++i) { if (!visited[tree[curr][i]] && tree[curr][i] != removeNumber) { if (tree[tree[curr][i]].size() == 0) { count += 1; continue; } que.push(tree[curr][i]); visited[tree[curr][i]] = true; } } } std::cout << count << "\n"; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); int N, temp, removeNumber; std::cin >> N; for(int i = 0; i < N; ++i) { std::cin >> temp; if (temp == -1) { continue; } tree[temp].push_back(i); } std::cin >> removeNumber; if (removeNumber == 0) { std::cout << 0 << "\n"; return 0; } bfs(0, removeNumber); return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 시간초과
안녕하세요 선생님 강의 잘 보고 있습니다.알맞게 구현한 거 같은데 시간초과가 나는데 이게 잘못되게 구현한 건지 궁금합니다../****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl, C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog. Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> #include <queue> int map[100][100] = {0, }; int result = 0; int result2 = 0; void bfs(const int H, const int W, const int x, const int y) { std::queue<std::pair<int, int>> que; que.push({x, y}); bool visited[H][W]; std::fill(&visited[0][0], &visited[H][W], false); visited[y][x] = true; int moveX[4] = {0, 0, -1, 1}; int moveY[4] = {1, -1, 0, 0}; int newX, newY; int currX, currY; int cnt = 0; while(!que.empty()) { currX = que.front().first; currY = que.front().second; que.pop(); for(int i = 0; i < 4; ++i) { newX = currX + moveX[i]; newY = currY + moveY[i]; if (!visited[newY][newX] && newX >= 0 && newX < W && newY >= 0 && newY < H && map[currY][currX] == 0) { visited[newY][newX] = true; if (map[newY][newX] == 1) { map[newY][newX] = 0; cnt += 1; } else { que.push({newX, newY}); } } } } result += 1; result2 = cnt; } bool isMapZero(const int H, const int W) { for (int i = 0; i < H; ++i) { for (int j = 0; j < W; ++j) { if (map[i][j] != 0) { return false; } } } return true; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); int H, W; std::cin >> H >> W; for(int i = 0; i < H; ++i) { for(int j = 0; j < W; ++j) { std::cin >> map[i][j]; } } bool flag = false; while(!flag) { flag = isMapZero(H, W); if (flag) { std::cout << result << "\n"; std::cout << result2 << "\n"; break; } bfs(H, W, 0, 0); } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I에서 커스텀 사용함수 질문
안녕하세요. 2-I문제를 풀다가 희한한걸 봐서 질문드립니다..bool comp1(string a, string b) { if(a.size() == b.size()) { for(int i = 0; i < a.size(); i++) { if(a[i] < b[i]) return true; } } return a.size() < b.size();}bool comp2(string a, string b) { if(a.size() == b.size()) { return a < b; } return a.size() < b.size();}위의 comp1, comp2 함수를 sort()의 인자로 넣었을 때 ccomp1을 넣으면 맞왜틀이, comp2를 넣으면 맞았다고 뜹니다.제가 생각했을 때 동작이 비슷하고 반례가 없어보이는데, 어떤 반례가 있길래 comp1, comp2의 채점 결과가 다르게 뜨는 걸까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
순수가상함수
virtual void PrintInfo()=0;순수가상함수-파생클래스에서 반드시 구현해야하는 ..자신은 아무 구현없이 선언만 하는...인터페이스인가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
명시적 복사생성 또는 복사대입연산에서
기사(부모,자식을 가진 중간클래스)만 의도적으로 생성하거나,안만드는 이유가 있을까요?왜냐면,펫(자식)도 플레이어(부모)도 계속 '명시적' 복사생성자,복사대입연산자함수를 갖고있어서,그리고, 없는 결과를 보면,결과가 기본생성자로 출력되서,..질문합니다. 만약, 실제로 설계중이라면, 일단 모든클래스에 (누가 누구를 소유할지 바뀔수도 있으니까) 명시적용도의 복사생성자,복사할당연산자함수를 다 넣고, 소유한 클래스는 다 포인터로 하고(단순히 일관적인 소유일경우만 암시적생성을 사용하고)..작업하는게 효율적일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 질문있습니다
http://boj.kr/af87db56b1254e1baa345487841bc5a51. (와[ 입력시 스택에 넣기2.) 입력시 맨위가 (아니라면 오류 또는 비어있다면 오류3. ]시 똑같이 오류다끝냈는데 스택 안비면 오류라는 논리로 문제를 풀었습니다.하지만 특정경우에 yes와 no가 같이 나와서 틀렸다고 하는거 같습니다f만 변화시킨후 마지막에 한꺼번에 출력하면 맞았다고 하더라고요어떤경우에 yes와 no가 같이 나오는지 알수있을까요