묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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)
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 만 했을경우 서로 같은 주소가 나오는이유를 잘모르겠습니다.혹시 추가로 설명을 들을수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 하나의 문자를 입력 받을 때 런타임 에러
안녕하세요, 큰돌님.http://boj.kr/f7198ad0aa0740abb6a3d6f9cb33c43e2-H 에서 입력 받은 s가 "a" 같은 하나의 문자일 때 런타임 에러가 떴습니다. 계속 수정하다 보니 모음 or 자음 3개 연속 조건 부분의 코드 문제인 것 같았습니다. for(int i = 0; i < s.size() - 2; i ++)그래서 s가 하나의 문자일 때를 나눠서 계산하였습니다. // s가 문자일 때 if(s.size() == 1) 이렇게 하니 맞긴 했는데 코드가 너무 난잡해진 것 같습니다...기존 방식의 런타임 에러의 이유제 코드보다 더 좋은 해결 방안이 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2Q 질문 있습니다!
안녕하세요 큰돌님!2Q 를 풀다가 반례를 못찾겠어서 질문드립니다!https://www.acmicpc.net/source/90805248제가 제출한 코드인데, 큰돌님의 풀이보다 복잡하고 비효율적인 것은 알지만 이 풀이가 왜 틀렸는지 알고싶어서 여쭤봅니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
스택만을 이용한 풀이
선생님의 풀이를 보고 이건 진짜 못떠올릴 것 같은데? 라는 생각이 들었습니다.배열에 마킹을 하면서 푸는 풀이는 떠올릴 수 있을 것 같은데, 스택만 이용한 풀이에서 -1을 넣어서 풀이하는 방식은 정말 감탄이 나오네요. 저도 스택만을 이용하는 비슷한 풀이를 떠올려서 '((()))'가 6이 나오게 하는 방법은 고안을 했는데 '((()))()'가 8이 되게 하는걸 처리하기가 너무 어렵더라구요. 하지만 -1을 넣어두면 전부 처리가 되네요.그리고 올바르지 않는 문자열이 오면 그 인덱스를 넣어주면 -1을 넣은 것과 동일하게 뒤의 문자열도 판별할 수 있다니...이 풀이를 보고 이런 아이디어는 정말 못 떠올릴 것 같다는 생각이 들었습니다. 이런 아이디어를 잘 떠올리기 위해서 어떻게 연습하면 좋을까요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
워커스레드가 1개일 때 가장 빠를 수 있을까요?
루키스님 안녕하세요?C# 서버에서 넘어와서 CPP 서버 공부하고 있습니다. 스트레스 관련해서 이해가 안되는 부분이 있어 질문 드리게 되었습니다. 제가 스트레스 테스트를 한 방법은 recvCount, sendCount 변수에 ++하여 1초에 1번 출력하는 방식으로, '개략적으로' 카운트가 되는지 테스트하고 있습니다.C# 서버에선 C_Move패킷을 각 클라이언트가 0.25초마다 서버로 보내서 100명의 더미클라이언트로 치면 서버에서 400번 Recv, 40000 Send(브로드캐스트이므로) 정도로,300명 정도까지 Move 패킷을 처리할 수 있는 수준으로 부하테스트가 되었습니다. 근데 CPP IOCP 서버에서 워커 스레드는 컴퓨터 스레드 개수에 맞게 하는게 적당하다고 하셨고, 실제 배포하신 자료에도 워커스레드는 5개를 정해주셨습니다 (저는 핵사 코어 컴퓨터를 사용 중입니다) C#과 마찬가지로 더미 클라이언트.가 C_Move 패킷을 보내고 count 변수에 ++하면서 보고 있는데, 워커 스레드가 오히려 1개일 때 월등히 작업이 빠릅니다. 스레드 1개는 300명 내외까지 가능하지만, 2개 이상부터는 100명도 버거운 수준이었습니다. 룸이 하나인 상황이어서 컨텍스트 스위칭 때문에 오히려 워커 스레드 2개부터 느릴 수 있는걸까요? 고민해봤는데 명확한 답이 안나와 질문 드립니다.
-
해결됨삼각형의 실전! CMake 초급
-G 명령으로 Xcode 생성 할때 오류가 발생합니다.
제가 맥에 대해서 거의 문외한 이어서. 발생 한 문제 원인을 잘 찾지 못하겠네요.hello-cmake 폴더에서 cmake -G "Xcode" -B build-xcode . 명령을 수행 하니 아래와 같은 오류가 발생 했습니다.-- The C compiler identification is unknown-- The CXX compiler identification is unknownCMake Error at CMakeLists.txt:5 (project): No CMAKE_C_COMPILER could be found.CMake Error at CMakeLists.txt:5 (project): No CMAKE_CXX_COMPILER could be found. "Unix makefiles" 는 정상적으로 만들어 졌습니다.Xcode 를 한번도 실행 한적이 없어서 발생 한 문제 인가 해서 최신 버전으로 업데이트 하고. hello world 프로젝트 만들어서 빌드 까지 해보았습니다. 이것과는 관련 없는것 같고요.hello-cmake 폴더는 깃허브에서 다운 받은 것 입니다.