묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맞왜틀! 반례가 궁금합니다!ㅠㅠ
http://boj.kr/91c2421aa3ef471eac5950368d3428c1이렇게 코드를 작성하였더니 주어진 테케가 잘 돌아가는데 틀린 이유가 궁금합니다ㅜㅜ 반례도 생각해보았는데 다 잘 돌아가서 뭐가 문젠지 모르겠어서요ㅠㅠ항상 잘 듣고 있습니당 감사합니다 ㅎㅎ
-
미해결[게임 프로그래머 도약반] DirectX11 입문
리소스를 관리하는데 shared_ptr를 써야되는가 RawPointer를 써야되는가 weak_ptr를 써야되는가?
한 GameObject 내부에서 선언되는 Parent, Children와 한 MeshRenderer 내부에서 선언되는 Mesh, Material 등등과 같은 리소스들은 각각 Scene과 ResourceManager내부에서 관리(생성, 파괴)되기 때문에 이런 관리해주는 클래스 에서만 shared_ptr로 생성해주고 다른 클래스 에서는 weak_ptr로 전해받았었습니다.그런데 문뜩 든 생각이 결국 다른 클래스에서 이런 객체들을 사용하기 위해 프레임마다 weak_ptr::lock을 사용하여 shared_ptr로 만들어서 사용할텐데 이러면 비용 부담이 너무 많이되어 배보다 배꼽이 큰 상황이 발생하는 것 같다는 생각이 들었고 이럴바엔 그냥 왠만한 클래스에선 리소스를 shared_ptr로 선언하고 사용한 후 관리해주는 클래스(Scene, ResourceManager)들에서 삭제될때 여기서도 동시에 shared_ptr를 지워버리는식으로 관리를 해주는게 더 좋을 것 같다고 생각을했는데 과연 옳은 생각인 건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
이런 방식으로 로또 번호를 생성하는 것도 랜덤이라고 볼 수 있을까요?
void ChooseLotto(int numbers[], int count) { // 랜덤으로 1~45 사이의 숫자 6개.... 중복 없이 int lotto[45]; for (int i = 0; i < 45; i++) { lotto[i] = i + 1; } // 공을 섞는 과정 for (int i = 0; i < 1000; i++) { int randNum1 = rand() % 45; int randNum2 = rand() % 45; Swap(&lotto[randNum1], &lotto[randNum2]); } for (int i = 0; i < count; i++) { numbers[i] = lotto[i]; } }안녕하세요, 강의 잘 보고 있습니다. 저는 실습 풀이를 이렇게 했는데요.로또 추첨을 할 때 커다란 통에 공을 집어넣고 6개의 번호가 쓰인 공을 꺼낸다고 하면, 한 번 꺼낸 공은 다시 추첨기에서 나오지 않아야 한다고 생각했습니다.따라서 1~45의 값이 들어있는 배열을 선언하고, 해당 배열을 rand()와 swap()을 이용해 계속 반복하여 섞어주고, 마지막에 0번~5번 인덱스까지 6개의 수를 numbers 배열에 담아주었습니다.이런 방식으로 로또 번호를 생성하는 것도 랜덤으로 번호를 생성한 것이라고 볼 수 있을까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스택 영역
스택 영역의 크기가 왜 컴파일 단계에서 결정되나요?프로그램이 실행하기 위해서 크기가 결정되어야 되는건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
Room에서 _objects 자료구조는 안전한가요?
bool Handle_C_LEAVE_GAME(PacketSessionRef& session, Protocol::C_LEAVE_GAME& pkt) { auto gameSession = static_pointer_cast<GameSession>(session); PlayerRef player = gameSession->player.load(); if (player == nullptr) return false; RoomRef room = player->room.load().lock(); if (room == nullptr) return false; room->HandleLeavePlayer(player); return true; } 잡큐에서 처리를 한다면 문제가 발생하지 않을거로 보이지만, 잡큐에서 실행하지 않고 room->HandleLeavePlayer 함수를 직접 호출하고 있습니다. _objects 자료구조에 접근하여 제거하는데요 Thread Safe 하지 않을거로 보여서요. 혹시 의도된건지 궁금합니다. 코드 흐름상 이정도는 알아서 수정하세요라는 느낌이 강하지만 혹시나해서 여쭤봅니다.
-
해결됨[입문] Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발
실행이 안되네요...
강의에서 알려주신 것처럼Visual studio 2019 community와 QT6를 설치했는데 아래 에러가 뜨면서 실행이 안되네요.. "ninja: build stopped: subcommand failed." 영상에서 알려준 설정을 모두 동일하게 적용했는데 왜 그럴까요..ㅜㅜ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2910번 질문 드립니다.
큰돌님 안녕하세요. 저는 이 문제를 map을 쓰지 않고 그냥 vector에서 find_if함수를 이용하여 풀었는데요. 제가 생각했을때에 sort한다면 입력받는 순서대로 vector에 push하게 되니까 먼저 나온것이 앞에 있어야된다는 조건을 자동적으로 처리될꺼라 생각했는데 오류가 났습니다. 그래서 stable_sort를 사용하여 결국 풀긴했는데 왜 그냥 sort는 안되는 것일까요? 소스코드 : http://boj.kr/84577fb3c0724cc3954dfd6ccfa2b412
-
해결됨홍정모의 따라하며 배우는 C++
if( 5 ) 자주 쓰나요?
안녕하세요, 좋은 강의 잘 듣고 있습니다.if (items_flag & opt1) 이런식으로 item1이 있는지 없는지 판단하는데,여기서 if() 안의 표현식이 0이 아닌 값으로 평가되면 true가 나온다는걸 이용하는건 알겠는데요,이 방식이 현업에서도 많이 쓰이나요?강의 초반에서도 교수님이 보는 이를 배려하는 코드, 가독성이 좋은 코드를 강조했는데, if() 안의 표현식이 0, 1, 2, 3, 4, 5 ... 등등 으로 평가되는 것보다 깔끔하게 0,1 혹은 true false 로만 평가되는게 가독성 측면에선 더 낫지 않나요?
-
해결됨홍정모의 따라하며 배우는 C++
private 안에 static 멤버변수
8.11강 3분쯤 보다가 궁금한 점이 있어 질문 남깁니다. class Something { private: static int s_value; public: int getValue() { return s_value; } } int Something::s_value = 1024;이렇게 클래스 내부에서 s_value 선언을 하고, 클래스 외부에서 초기화를 하셨는데,클래스 외부에서 private 안에서 선언된 멤버변수로 접근하는것이 불가능한것으로 알고 있는데, 이 경우는 어떻게 가능한건지 알고 싶습니다. int main() { cout << something.getValue() << endl; // cout << something.s_value << endl; // 에러 }그리고 이렇게 cout으로 출력했을 때, 아래 부분이 에러나는 이유도 궁금합니다. private 내의 static 멤버변수는 외부에서 접근이 불가능한거고, 초기화만 외부에서 해줄 수 있는건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이 코드에서 erase 함수는 불필요할까요?
http://boj.kr/a89a03fa7dcd4e108a3576e95e177b5c 이 코드는 강의를 보기 전에 제가 자력으로 풀어본 코드입니다. 인접리스트로 트리를 구현하고, 지울 노드를 입력할 시 erase 함수를 통해 해당 노드의 하위 트리를 모두 삭제한 후 지울 노드를 삭제합니다. 그 후에 calculate 함수를 통해 값을 구하는데요, 강의에서 dfs 하나만으로 푸시는걸 보니 굳이 erase가 필요할까 싶기도 했네요.. 무식하게 일단 풀어본다는게 이렇게 된거 같은데 여기서 좀 더 코드를 다듬을 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DFS로는 맞춰서 BFS로 풀어보았습니다!
BFS로 풀었을 때 답은 맞는데 제출하면 메모리 초과로 틀렸다고 나오는데,혹시 이 코드에서 메모리를 줄여서 맞힐 수 있는 방법이 있는지 여쭤보고 싶습니다!#include<bits/stdc++.h> using namespace std; int N; const int dy[4] = {-1,0,1,0}; const int dx[4] = {0,1,0,-1}; const int max_n = 100; int arr[max_n][max_n]; int visited[max_n][max_n]; int x,y; int Max = 0; int main(){ cin >> N; fill(&arr[0][0], &arr[0][0] + max_n*max_n, 0); for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ cin >> arr[i][j]; } } for(int h = 1; h <= 100; h++){ int cnt = 0; fill(&visited[0][0], &visited[0][0] + max_n*max_n, 0); for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ if(arr[i][j] >= h && visited[i][j] == 0){ queue<pair<int,int>> q; q.push({i,j}); cnt++; while(q.size()){ tie(y,x) = q.front(); q.pop(); visited[y][x] = 1; for(int n = 0; n < 4; n++){ int ny = y + dy[n]; int nx = x + dx[n]; if(ny < 0 || ny >= N || ny < 0 || ny >= N){ continue; } if(arr[ny][nx] < h){ continue; } if(visited[ny][nx]){ continue; } q.push({ny,nx}); } } } } } Max = max(Max, cnt); } cout << Max; return 0; }
-
미해결홍정모의 따라하며 배우는 C++
#include<algorithm>없이 std:max()사용 가능
강의 5:20에서 보면std::max()는 <algorithm>이라는 라이브러리 안에 저장되어 있어서 #include로 불러와야 사용이 가능하다고 하셨습니다.#include <iostream> using namespace std; int main() { cout << std::max(100,2) << endl; return 0; }근데 왜 저는 <algorithm>을 불러오지 않아도 오류 없이 사용이 가능할까요? 궁금하네요... 감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
namespace의 활용
namespace의 사용이유는std::cout, std::cin, std::in처럼 함수를 목적에 따라 분류하기 위해서 사용하는 건가요? 함수만 namespace에 저장할 수 있는 지 궁금해져서 #include <iostream> using namespace std; namespace Space1 { int a = 10; } int main() { cout << Space1::a << endl; return 0; }이렇게 입력했더니 정수형 변수 a도 namespace에 저장할 수 있었습니다.함수 이외에도 namespace를 사용하는 경우가 있을까요?? 감사합니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스택 프레임에서
지역변수의 경우에는 매개변수, 이전bp값과는 다르게push 명령어 없이도 스택에 저장되는 것인가요?만약 맞다면mov ebp, espsub esp, ..... 이후 어느 명령어를 통해서지역변수 c의 값이 스택에 저장된 것인지 궁금합니다.
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
2d 이동 로직 관련 질문 드립니다.
안녕하세요 강의를 들으면서 메이플스토리 모작 2d 포폴을 만들고 있습니다.상태 변화에 따른 처리 로직을 만들던 중 한 가지 질문드립니다.void Player::OnComponentBeginOverlap 땅과 충돌 했을때SetState(PlayerState::MoveGround) 로 바꿔주어서 중력 작용을 받지 않게하고 void Player::OnComponentEndOverlap 땅과 충돌이 끝났으면SetState(PlayerState::GroundFall) 로 바꿔주면서 중력 작용을 받게 하는충돌 처리 로직이 - 충돌 했을때 밀어주는 방법을 사용하여 플레이어 상태가 GroundFall <-> MoveGround 상태를 계속 왔다 갔다 하면서 동작을 하게 됩니다. 땅과 떨어졌을때 계속 중력을 받아야 하는건 맞는 상태인 것 같은데 플레이어의 상태가 계속 변화하는 문제가 생기게 됩니다.-> 땅과 떨어 졌을때는 GroundFall 상태로만 되고 땅과 붙었을때는 MoveGround 상태로만 동작이 되었으면 합니다.State 패턴 강의에서 슈퍼마리오 예제를 하시다.아름다운 방법을 찾으셨다고 말씀 하셨는데 어떠한 방법으로 해결 하셨는지 알 수 있을까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
섹션5 7번 문제 알리바바와 40인의 도둑 설명이 잘못된건지 제가 잘못 이해하는 건지 확인 부탁드립니다.
안녕하세요, 섹션5 7번 문제 알리바바와 40인의 도둑 설명 중에, 오른쪽 또는 아래쪽으로만 간다고 말씀하셨는데,만약 돌다리가 아래와 같이 주어지면, 7*7 행렬에, 0 index 부터 시작한다고 했을 때,1 9 9 9 1 1 11 1 1 1 9 9 19 9 9 9 9 9 19 9 9 9 9 9 19 9 9 9 9 9 19 9 9 9 9 9 19 9 9 9 9 9 1이 경우에는 (0,0)->(1,0)->(1,1)->(1,2)->(1,3)->(1,4)->(위로 이동)->(0,4)->(0,5)->(0,6)->...이렇게 해서 위로 이동하는 경우가 있어야 최소 비용으로 갈 수있는 것 아닌가요?....
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 질문드립니다
안녕하세요 선생님 강의 잘 보고 코테 준비중입니다http://boj.kr/0e551d7f960a46a0a8bda8fc069bcc401% 부터 틀리는게 뭐가 문제일까요?반례들 넣어보면 잘 나오는거 같거든요답변 좀 부탁드립니다~
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
C++ 언리얼 과정 관련 질문드립니다.
안녕하세요. Rookiss님!게임 서버 개발자에 도전해보고 싶어서 Rookiss님 강의를 수강하게 되었습니다!그래서 서버 개발을 위주로 공부하고 싶은데 C++ 언리얼 과정 중에 있는 게임수학과 DirectX12 강의를 스킵하고 진행해도 다른 강의 진행에 문제가 없을지 서버 개발자로 취업하는데 문제가 없을지 질문드립니다!
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
충돌 체크 방식 질문
안녕하세요 강의를 들으며 공부하면서 메이플스토리를 모작으로 포토폴리오 만들고 있습니다.강의에서는 타일맵 형식으로 충돌을 체크 하였는데 미세한 움직임을 구현하기 위해서는 타일맵 형식 보다는 충돌 레이어 (boxcollider)와 같은 충돌 방식이 더 좋은 방법이 될려나요?타일맵 형식은 셀 단위로 이동을 하다 보니 미세한 움직임은 불가능해 보여서 질문드립니다.서버와 클라이언트를 연동하는 것을 고려 했을때 타일맵과 충돌 레이어 두 가지 방식 중 어느 것이 더 좋은 방법이 될까요?
-
미해결홍정모의 따라하며 배우는 C++
함수포인터 질문 드려요!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.7.9강을 듣고 의문이 들었던점은포인터는 메모리를 새로 할당받는다는 단점이 있기때문에참조를 사용했는데 함수를 매개변수로 활용하고싶을때 함수포인터가 아닌참조를 사용할수도있나요?