묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C++
friend키워드가 들어간 연산자 오버로딩함수를 클래스 내부에 정의하는 이유?
friend 키워드를 이용해 연산자 <<를 오버로딩한 함수를 정의할때, 전역변수임에도 불구하고클래스 내부에 함수에 대한 정의까지 하는 이유를 잘 모르겠습니다. 클래스 내부에는 함수에 대한 선언만 하고 정의는 클래스 바깥에 하지 않는 이유가 있을까요?강의중에 강사님께서도 몇번 헷갈리실정도로 가독성에 안좋고 처음 제가 이 내용을 학습할때도 굉장히 헷갈릴정도로 혼동을 유발하는것 같은데이런 방식을 써야하는 이유가 있는지 궁금합니다
-
해결됨[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
Item#12 ItemTemplateID 에러
Item#12 강의에서 마지막에 실행하려고 하면 아래와 같이 ItemTemplateID를 가져오지 못하는 문제가 발생합니다. 그 전까지 발생하지 않았는데 B_Character_Base와 B_HeroCharacter_Base 이동 후에 발생하는 것으로 보아 이 과정에서 뭔가 잘못된 것이 있는 것인지 문의 드립니다. ItemTemplateClass도 넘어오고 ItemTemplateClassToID에도 해당 항목이 있는 것 같은데 ItemTemplateID를 가져오지 못하는 것 같습니다. ItemTemplateID를 가져오지 못하네요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
포인터 사이즈와 주소값
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하시렵니까 본론부터 말씀드리자면, 해당 강의 3분 27초경에 출력되는 값을 보면 0x...0100x...0100x...0140x...014라는 것을 확인할 수 있는데, 주소 값이 4가 커졌다는 건 int 배열의 각 값들이 4 Byte이기 때문이라고 이해했습니다. 다만 이전 강의에서- int는 4바이트, double은 8바이트니까 포인터도 4, 8바이트가 되어야 하는 게 아닌가?- 포인터의 크기는 실행 OS 체제의 비트마다 달라짐- Window OS 64비트를 사용하는 경우의 포인터 사이즈 = 8 Byte- Window OS 32비트를 사용하는 경우의 포인터 사이즈 = 4 Byte 이러한 내용을 확인할 수 있었는데, int 배열을 포인터로 변환했으니, 이전과 마찬가지로 주소값이 8이 커져야 한다고 생각했는데 그렇지 않았다는 점에서 의문이 생겼습니다! int 배열을 포인터에 할당하면서 포인터로 전환되는 것이 아니라 단순히 주소를 할당했기 때문에 이런 일이 발생하는걸까요? 또한, 포인터의 크기가 8 Byte라고 했을 때, 연속되는 포인터라고 가정한다면 두 포인터의 주소값 차이는 8이 맞는지도 궁금합니다! 감사합니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
cin은 c언어에서의 scanf와 동일하다고 봐도 될까요?
해당 함수가 .getline을 받아 오는 부분을 상세하게 설명 받고 싶습니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
세션8 우선순위 큐 pop함수의 Predicate 적용 관련 질문이 있습니다.
pop 함수를 보면 if (right < (int)_heap.size() && predicate(heap[next], _heap[right]))인 left와의 비교에서 나온 결과 값을 비교하는 부분에만 predicate를 적용하였는데 위에 left와 비교하는 부분은 둘 중 더 큰 값을 next에 넣는게 목적인 코드입니다.더 작은값을 찾을때 문제가 생길 수 있을것이라 생각이 되는데 문제가 생기지 않아 의문점이 생겨 질문 드립니다.left쪽엔 predicate 비교를 하지 않아도 되는 이유가 무엇일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H(#2234, 성곽)문제 DFS대신 BFS 사용
안녕하세요 선생님.#2234 문제에 대해서 Connected Component개념으로 DFS를 소개해주셔서 문제풀이를 이해하는데 수월했습니다. 다만, 처음 문제를 저 혼자 풀 때,각 방 칸의 크기가 1이고, 방 칸의 개수에 따라 방 넓이가 결정되므로 가중치가 동일하니 BFS로도 풀 수 있지 않을까라고 생각되어 아래와 같이 풀어봤습니다.http://boj.kr/896f1a9fbf8e47628666c1c0a8c59db5 각 방을 탐색할때마다 queue를 생성하고 queue pop을 할 때마다 방 칸의 개수를 cnt++라는 변수에 담고,탐색을 더이상 진행할 수 없을 때 방 칸의 개수값 cnt를 return하도록 하여 탐색했는데요. 문제에서 주어진 예제 입력1은 통과했지만 채점에서도 어떠한 반례에 걸려 fail이 발생한 것 같습니다.BFS 탐색 코드에 어떠한 문제점이 있는지 피드백 주시면 감사드리겠습니다... 감사합니다.
-
해결됨MFC Windows 프로그래밍 - 기본
MFC로 게임 엔진 제작 질문
안녕하세요 선생님DirectX 및 MFC로 유니티 엔진과 대략 비슷한(?) UI를 가진 게임 엔진을 만들어보고 있습니다... 아래는 제가 참고중인 유니티 엔진의 UI 구성이며,저도 위와 얼추 비슷한 구성으로 아래와 같이 CSplitterWnd 객체 여러 개를 사용하여 메인 프레임을 여러 개로 분할하여 아래와 같이 구성만 해둔 상태입니다.드리고 싶은 질문은 CSplitterWnd로 창을 얼추 비슷하게 분할하고 각각에 적절한 뷰를 넣은것까지는 위와 같이 완료했는데요, 다만 오른쪽 아래 빨간색으로 박스 친 영역은 어떤 뷰 객체를 띄울지 런타임에 수시로 변경이 일어나야 하는 상황입니다.이 기능을 구현해야 하는데 필요한 폼 뷰들을 미리 생성해두고 런타임에 계속 바꿔 끼는(?) 식의 구현이 MFC 프레임워크에서 가능한 일인지, 가능하다면 대략 어떤 식으로 해야 하는지 힌트를 주실 수 있으실까요?! 혹시 책에서 다루고 계신 내용이면 제가 찾아보도록 하겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-f 질문입니다
우선순위큐 크기가 가방 총 크기보다 클 때만 큐에서 빼는 로직을 작성했는데 왜 틀렸는지 궁금합니다#include<bits/stdc++.h> using namespace std; typedef long long ll; priority_queue<ll> pq; ll n,k,ret; int main(){ cin>>n>>k; pair<ll,ll> v[n]; //jewelry ll bag[k]; for (int i=0;i<n;i++){ cin>>v[i].first>>v[i].second; } for (int i=0;i<k;i++){ cin>>bag[i]; } int idx=0; //bag index sort(v,v+n); sort(bag,bag+k); int idx2=0; while (idx2<n){ while (idx<k && idx2<n){ if (bag[idx]<v[idx2].first) idx++; else{ if (pq.size()==k){ if (v[idx2].second>pq.top()){ pq.pop(); pq.push(v[idx2].second); } }else if (pq.size()<k) pq.push(v[idx2].second); } idx2++; } } while (pq.size()){ ret+=pq.top(); pq.pop(); } cout<<ret;
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
'1-L' 시간 복잡도 질문 있습니다.
n이 15000이고 2초의 제한 시간이라 조합이 떠올랐지만 이중 for문으로 풀 생각을 못했습니다. 문제를 재귀로 풀고 생각해보니 최악의 경우인 15000 * 15000이 될 수 없긴 한데 그래도 N^2의 시간 복잡도인데 어떻게 통과한 것인지 궁금하고 이런 경우 대충?의 시간 복잡도를 어떻게 계산해서 -> 이중 for문으로도 풀어도 되겠다라는 생각까지 이어지는 것인지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
'1-L 재귀로 푸는 풀이' 재귀 시간복잡도 질문 있습니다,
http://boj.kr/35af496c1fb44628be4b5f27dde803d3문제 보자 마자 조합이 떠올라서 위처럼 풀었습니다.코드 자체에 대한 질문은 아니고 '재귀함수의 시간 복잡도를 어떻게 계산'하는지 궁금합니다.함수를 호출시 스택 프레임이 쌓이고 이것을 반환하고..등등의 작업 까지 생각하는 것은 아닌거같아 질문드립니다.재귀 함수의 깊이가 100이면 O(100)으로 시간 복잡도가 잡히는 것인지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
정답과 다르게 코드를 짜봤습니다
안녕하세요 정답과 다르게 코드를 짜봤는데 코드 평가 해주실 수 있나요?? http://boj.kr/e426c9cd01624541b5251528546a8eae 강의 잘 보고있습니다 감사합니다
-
미해결Windows System 프로그래밍
21분 PAE 약자
PAE(물리적 주소 확장)는 x86 프로세서가 지원되는 Windows 버전에서 4GB 이상의 실제 메모리에 액세스할 수 있도록 하는 프로세서 기능입니다. x86 기반 시스템에서 실행되는 특정 32비트 버전의 Windows Server는 프로세서의 실제 주소 크기에 따라 PAE를 사용하여 최대 64GB 또는 128GB의 실제 메모리에 액세스할 수 있습니다. 자세한 내용은 Windows 릴리스에 대한 메모리 제한을 참조하세요.Physical Address Extension 인 것 같습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p33 cout 질문드립니다.
안녕하세요. 선생님.강의 교안 p.33에서cout << a << " " << "" << b << '\n';"" 빈 문자열을 넣으신 이유가 있을까요?빈 문자열을 빼도 출력 값은 동일하게 보이는데 어떤 의미로 넣으신건지 궁금합니다.혹시 cout 설명처럼 입력할 문자열을 넣을 수 있다를 설명하기 위해서 그런건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
마지막 문제 질문드립니다.
class Player; class Arrow { public: Arrow(Player*& target, int damage); ~Arrow(); public: void AttackTarget(); public: Player*& _target; int _damage; };Arrow 부분의 생성자와 멤버 변수를 이렇게 바꾸고 Arrow* arrow = new Arrow(knight, archer->_attack); 이렇게 넣으면 될 줄 알았는데 안되서Arrow* arrow = new Arrow(reinterpret_cast<Player*&>(knight), archer->_attack); 이렇게 강제 형변환을 해주니 실행되더라구요. knight의 부모가 Player니 암시적으로 형변환이 될 줄 알았는데 명시적으로 해주어야 하는 이유가 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-C질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.#include<iostream> #include<algorithm> #include<vector> #include<utility> using namespace std; int n,person[14],ret =987654321,temp,temp1,visited[14],comp[14]; string s; vector<int> adj[14]; pair<int,int> dfs(int here, int value){//인접구 개수, 인구수 반환 visited[here] =1; pair<int,int> ret = {1,person[here]}; for(int there:adj[here]){ if(comp[there] != value) continue; if(visited[there]) continue; pair<int,int> temp_ = dfs(there,value); ret.first +=temp_.first; ret.second += temp_.second; } return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n; for(int i =1; i<=n;i++){ cin>>person[i]; } for(int i =1;i<=n;i++){ cin>>temp; for(int j =0; j<temp;j++){ cin>>temp1; adj[i].push_back(temp1); adj[temp1].push_back(i); } } for(int i =1;i<(1<<n)-1; i++){ fill(&comp[0],&comp[0]+14,0); fill(&visited[0],&visited[0]+14,0); int idx1=-1,idx2 =-1; for(int j =0; j<n;j++){ if(i&(1<<j)){ comp[j+1]=1; idx1 = j+1; } else idx2 = j+1; } pair<int,int> comp1 = dfs(idx1,1); pair<int,int> comp2 = dfs(idx2,0); if(comp1.first+comp2.first == n) ret = min(ret,abs(comp1.second-comp2.second)); } cout<<(ret==987654321 ? -1:ret); return 0; }저는 이렇게 백준에 제출했을때 맞았다고 나오는데 제 vscode에서는 예제에서 밑에 만큼 입력하면 -1이 출력되어 끝나 버립니다 왜 그런건가요..? 다른 문제 풀때도 정답은 맞지만 제가 실행하면 도중에 입력을 그만 받습니다.. ㅠㅠ6 5 2 3 4 1 2 2 2 4 4 1 3 6 5
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J BFS 코드 효율성 질문
http://boj.kr/b3912cd4b65448baa4a27bea951494cb안녕하세요, 큰돌님.해당 문제를 queue를 이용한 BFS로 풀었습니다.더 효율적으로 수정할 부분이 있을까요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)
PawnExtensionComponent와 HeroComponent의 InitState 변천 순서
로깅 및 디버깅을 해 본 결과,PawnExtensionComponent가 DataInitialized->GameReady를 거친 이후에 HeroComponent::OnActorInitStateChanged가 2번 호출되며 각각 PawnExtensionComponent가 DataInitialized, GameReady가 되었다고 콜백이 옵니다.. (PawnExtensionComponent가 DataInitialized된 이후에 바로 HeroComponent::OnActorInitStateChanged가 호출되어야 정상) 이로 인해서 ULCHeroComponent가 DataAvailable 상태에서 다음 단계로 진행이 안되네요. 무슨 문제일까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션9 함수 포인터 관련 질문입니다.
영상 초반 내용을 보면 using FuncPtr = void();는 잘 사용하지 않는 문법이라고 하고, 뒤이어 나오는using FuncPtr = void(*)();와 같은 형식을 자주 사용한다고 했는데 동일하게 동작한다면 오히려 앞쪽이 더 편한 것 아닌가요? (*)를 추가하는 이유가 단순히 포인터임을 표시해주기 위함 인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H ret 초기값 질문 있습니다.
선생님 코드에서 ret의 초기값을 -1000000 으로 주셨는데 이유가 궁금합니다.만약 n이 100000, k가 99999, 모든 temp가 -100일 때 0~99999까지 더하면 -1000000보다 작은 값이 나오게 되어 최대 값을 제대로 못찾을거같은데 어떻게 코드가 통과한 것인지 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C++
46분관한 설명이 이해가 안갑니다
일단 서로 주소가 다른다는것은 알겠습니다.헤더 파일에서 선언과 define 을 했을 경우 각각 cpp 파일에서 주소가 다르게 나왔다..이지만 my_constants.cpp 에서 define 을 하고 헤더 파일에는 declaration 만 했을경우 서로 같은 주소가 나오는이유를 잘모르겠습니다.혹시 추가로 설명을 들을수 있을까요?