묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
이동동기화 관련 질문 드립니다. 추측항법 외.
안녕하세요 루키스님. 지금은 C#서버로 칸 없이 3D 이동 동기화 토이프로젝트 여러모로 시도해보고 있습니다.제 토이 프로젝트의 목적은추측항법을 사용해 칸 없이 3D 이동 동기화로써 루키스님 강의들 Q&A 뒤적여서 이해한 추측 항법은 "목적지를 뿌려주고 거기로 어떻게 하던지간에 이동하게 해준다" 로 다음 아이디어를 적용해보게 되었습니다. 기본 아이디어는 플레이어 A가 [0,0,0]에 있다면, 바라보는 방향으로 벡터1 만큼을 더한 위치, 예를 들어 w를 누르면 [1,0,0]의 C_Move 요청 패킷을 날리고, 서버가 모든 유저들에게 브로드캐스팅 해주면,각 클라이언트는 A의 위치를 [0,0,0] 에서 [1,0,0]으로 자연스러운 Transform 변경으로 '스르륵'을 구현했습니다.// 참고용 위치 동기화 핵심 코드 void Update() { // destinationPos : S_Move패킷을 통해 갱신된 목표 위치 float distance = Vector3.Distance(transform.position, destinationPos); // 목표지점에 거의 다왔으면 목표 위치로 순간이동 if(distance < 0.1f) { transform.position = destinationPos; } else { // 스르륵 이동 transform.position = Vector3.MoveTowards(transform.position, destinationPos, Speed * Time.deltaTime); } // TODO : 보정 등 } 현재 C++ 서버도 병행해서 공부하는 저의 시점에서, 몇가지가 궁금해서 질문 드리게 되었습니다.Q1. 지금 강의, IOCP와 UE5에서 소개해주신 이동 동기화를 추측항법은 아닌 것으로 이해됩니다(과거 위치를 브로드캐스팅 해주고 있으므로). 제가 이해한게 맞을까요? Q2. 제가 구현한 아이디어와 코드도 일종의 추측항법이라고 우겨도 될까요? 포트폴리오 키워드로 녹이고 싶은 욕심이 있습니다. Q3. 제가 채택한 이동 동기화의 방법의 피드백도 가능하다면 받고 싶습니다. 위 코드에 보정은 어느 정도 넣을 예정이지만, 기본 아이디어에 대해 시니어님의 의견도 여쭈고 싶습니다. 차기 강의 항상 기대하고 있습니다 ㅎㅎ 몸은 다 나으셨는지 모르겠네요.답변 미리 감사합니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
19번 질문있습니다
#include <iostream>using namespace std;int main(){ int n; int a[200]; int i; int j; int cnt = 0; bool flag; cin >> n; for (i = 0;i < n;i++) { cin >> a[i]; } for (i = 0;i < n-1;i++) { flag = true; for (j = i + 1;j < n;j++) { if (a[i] < a[j]) { flag = false; break; } } if (flag == true) { cnt++; } } cout << cnt; return 0;}제가 짠 코드로 채점기 돌리니깐 5번에서 fail 뜨는데 어디서 오류가 났는지 모르겠습니다 ㅠ저는 인덱스 0부터 순회하였습니다!!
-
해결됨C개발자를 위한 최소한의 C++
C++ 파일 구조 질문
헤더1개 Cpp파일 1개 코드를 여러 개의 파일로 모듈화하는 방법에 대해 질문드립니다.함수 모듈화, 헤더파일 디자인, 파일 구조 설계, 순환참조 방지 등에 대한 지식이 없어서 어떻게 파일을 속성에 따라 나누고, include해야 원래 코드와 동일하게 동작하게 만들 수 있는지 모르겠습니다. gpt 한테물어보니 디자인패턴을 공부하라고 하는데, 디자인 패턴은 이미 파일 구조가 짜여진 내에서 클래스를 세분화하거나 코드 재사용성을 위한 상속에 관한 내용 같았습니다. 위 경우 어떤 내용을 공부하거나 참고하면 좋을까요? 정말 고민되어서 여쭤봅니다. ㅎㅎ
-
미해결홍정모의 따라하며 배우는 C++
const의 유무
혹시 변수에 const를 붙이는 순간을 나누는 기준이 있을까요?
-
해결됨C개발자를 위한 최소한의 C++
빈 포인터에 멤버함수 호출
class A{public:int foo(int num) { return num; }};int main(){A* a = nullptr;int pa = a->foo(10);return 0;}이 코드를 실행하면 문제가 나지 않았습니다. 멤버 함수 호출이라는 것이 결국에 함수에 this포인터만 넣어주는 형태이기 멤버를 건드리지 않는 이상 런타임상에서 크래시가 나지 않는 걸로 생각은 하는데 이 생각이 맞을까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
6번 관련 채점오류입니다
#include <iostream>using namespace std;int main(){ char a[100]; int i; int j; int num = 0; int count = 0; cin >> a; for (i = 0; a[i] != '\0';i++) { if (a[i] >= '1' && a[i] <= '9') { num = 10*num + (a[i]-'0'); } } for (j = 1 ; j <= num;j++) { if (num % j == 0) { count = count + 1; } } cout << num << endl << count <<endl; return 0;}다음과 같은 채점 20점이 나오는데 무슨 오류인지 모르겠습니다 로직은 제대로 구현한것 같습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 질문
안녕하세요, 선생님. 새해복 많이 받으시길 바랍니다. 3-K(#3179, 백조의 호수) 문제를 강의내용 기반으로 혼자 짜보았는데 2%채점 중에 항상 시간초과가 발생하여 질문 드립니다. 코드는 아래 링크와 같습니다.http://boj.kr/9a423cb3ee32415a8e66d7d1516881fe 기탐색한 큐를 재탐색하지 않도록 q.size가 끝날 때마다 q를 tempQ로 교체하도록 코드는 수정하였으나, 어디선가 불필요한 중복탐색이 발생하는 것으로 예상됩니다.다만, 저 혼자서는 해당 중복탐색 부분을 발견 못하여 도움을 요청 드립니다... 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 불! 문제 반례 질문
안녕하세요, 선생님. 새해복 많이 받으시길 바랍니다. #4179불! 문제에 대해, 아래 링크와 같이 코드를 짜봤습니다.(강의에서 설명해주신 반례(F가 없는 경우)를 처리하지 못하는 부분은 선생님 코드를 참고하여 수정을 해봤습니다.)http://boj.kr/a026e22915944cc9b8bfd1b8a9fd9905 지훈이에 대해 j_bfs 함수로 탈출가능한 경로를 탐색하여 j_bfs_visited에 거리값을 기록하고,불에 대해서도 f_bfs 함수로 별도로 경로를 탐색하여 f_bfs_visited에 거리값을 기록한 다음,마지막에 compare_bfs 함수에서 j_bfs_visited와 f_bfs_visited를 비교하는 조건을 추가하여, 탈출 가능한지 탐색하는 방식으로 코드를 짜보려 했습니다. 허나, 틀렸다고 결과(채점중11%에서 틀렸다고 판정됩니다.)가 나오네요... 나름대로 이것저것 경우를 생각하며 반례를 찾고 있는데 쉽지가 않아 도움을 요청 드립니다. 지훈이와 불에 대해 각각 BFS를 한 후, visited를 비교한다는 점에서 선생님 코드와 유사한 방식으로 풀릴 것이라 생각했는데, 미처 생각하지 못한 오류가 제 코드에 있는 것 같습니다. 혹시 제 코드에서 논리적으로 의심되는 바를 짚어주시면 감사드리겠습니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
안녕하세요 roatation 행렬 질문있습니다.
여기에서 v x M을 하게 되면, X = xcos B+ ysin B Y = -xsinB + ycosB가 나오는거 같아서 질문 올립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님 다다음주 코테를 앞두고 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강의 중 큰돌님께서 비트마스크가 가능한 수는 n=16 이하(?)정도로 설명하셨는데 다시 강의를 볼 시간이 부족하여 질문드립니다.또한 완전탐색이 가능한 시간복잡도는 1억 이하,1000만 이하(?)가 맞는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
while을 사용하여 반복문을 작성했는데 안되는 이유가 알고 싶습니다.
안녕하세요!강의에서 N과 N개의 자연수가 주어진다. 여기서 몇개의 숫자를 골라 합을 mod 11을 했을 때 나오는 가장 큰수를 구하라. 문제를 작성할 때 #include<bits/stdc++.h>using namespace std;int n, ret;vector<int> v;void go(int idx, int sum){ if(idx == n){ ret = max(ret, sum % 11); return; } go(idx + 1, sum); go(idx + 1, sum + v[idx]);}int main() { cin >> n; int num; while(n--){ cin >> num; v.push_back(num); } go(0, 0); cout << ret << "\n"; }이렇게 작성하면 오류가 발생하고 while(n--) 부분을 for(int i = 0; i < n; i++)로 작성하면 잘 실행이 되는데 이유가 뭔지 알 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-M 질문드립니다.
Q1. 이게 dp 인가요..? 아니면 중간에 넣어두신 구현 문제인가요? Q2. 시간복잡도 계산은 어떻게 하셨나요? 시험도중에 시간복잡도를 계산하기 위해서는 한칸에 존재할 수 있는 나무의 최대 개수를 추정해야한다고 생각이 드는데, 이를 어떻게 추정하셨는지 궁금합니다. 다른 분의 Q&A를 보니 8칸으로부터 나무가 추가될 수 있으니 최대 8개라고 하셨는데, 이전 년도부터 존재하던 나무는 고려하지 않는건가요? 제 이해로는 최대 8개라는건 이번 1년동안 추가될 수 있는 나무의 최대개수라고 생각이 듭니다. 저희는 1년~1000 년 까지 추가될 수 있는 나무의 개수를 추정해야하는 것 아닌가요? 제 코드는 다음과 같습니다!https://www.acmicpc.net/source/89268714저는 봄,여름을 springSum 라는 하나의 함수로 묶었고, 가을, 겨울을 fallWin 라는 하나의 함수로 묶었습니다. 이때 시간복잡도를 추정해보면 k * (springSum + fallWin) 이고, 세부적으로는springSum : n^2 * (한칸에 있는 나무 최대개수 + nlogn)fallWin : n^2 (번식할 나무 개수 * 8)라고 했을 때, 그 다음부터 사고가 꼬입니다.. 그래도 대략적으로 생각을 해볼때 ..한칸에 있는 나무 최대개수 : k년동안 8개의 주위 칸으로부터 나무를 받는다고 했을 때, 8*k 이고 k는 1~1000까지 이므로 log(8000)개 = 3log 8 * 1000 -> 보수적으로 1000개번식할 나무 개수 : 100개 라고 생각이 들어서 결과적으로 1억이 넘는다고 계산이 됩니다. 물론 문제 구성상, 나무가 나이가 들어가며 양분을 더 많이 필요로 하게 되므로 양분의 한계로 인해 개수가 어느정도 유지되는 것 같기도 하고, 나무 번식 주기가 5의 배수마다 한번씩 할 수 있으니 이또한 실제 고려한 횟수보다 훨씬 적을 것 같은데 정확하게 시험장에서 이 코드가 시간 제한을 통과한다고 확신을 못하겠습니다 ㅜㅜ... 어디가 틀린것인지, 알려주시면 감사하겠습니다 !!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?
22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?vector를 써서 배열을 선언할 때, std를 사용하던데 C에도 사용이 되는 문법인건지, 아니면 C++에서도 cin 대신 scanf를 쓰는 것인지 궁금합니다!그리고 std::vector<int> a(n) 이렇게 소괄호를 썼는데, 아래 for문 전개에서는 a[i] 이렇게 대괄호를 쓰는 것은 배열이기 때문인걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
왜 당연히 n=8일때 아래 가지가 2개씩 늘어나나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 1주차 개념 #5-2의 1분 59초 안녕하세요 큰돌님 n=4일때는 그냥 2n-1으로 7번 반복됨을 아는데 왜 당연하게 n=8일때는 아래 8개가 늘어나는지가 궁금합니다. 물론 직접 해보면 저렇게 되는것을 알고 있긴한데 어떤 이유에서 저렇게 당연하게 말씀하신게 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 4659 비밀번호 발음하기 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/4ee8d966049241338c5a85f9b7c8568b강의 없이 혼자 풀어보고 제출했는데, 테스트케이스는 다 맞는다고 나오는데, 왜 틀렸는지 모르겠어서 질문드립니다!
-
해결됨SW 역량테스트 합격하기 A형 with C++ (Advanced Algorithm)
안녕하세요 선생님 코드트리 원자충돌(2020 하반기 오전 2번)에서 질문 있습니다.
안녕하세요 선생님원자 충돌(코드트리, 2020 하반기 오전 2번)에서 질문 있습니다.처음에 짤때 낚시왕(BOJ 17143)을 떠올리고 아래 처럼 코드를 짰는데 오답이 나옵니다.int dir=d; int dist = s%n; int sx = x; int sy = y; for(int cnt_k=0;cnt_k<dist;cnt_k++){ int nx = sx+dx[dir]; int ny = sy+dy[dir]; if(nx<0) nx=n-1; if(nx>=n) nx=0; if(ny<0) ny=n-1; if(ny>=n) ny=0; sx = nx; sy = ny; }이 부분만 선생님의 코드로 바꾸면 문제가 없어서 이 부분이 틀린 것이 확실한데 왜 오답인지 모르겠습니다 ..좋은 강의해주셔서 항상 감사드립니다 !.
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Fragment에 대한 질문
Weapon Equip#2 까지 보고 돌아와서 질문 드립니다.흐름을 보면 QuickBarComponent에서 Fragment의 정보를 읽고 아이템을 장착하는 과정을 진행하는데 그러면 Fragment는 아이템의 컴포넌트보다는 인터페이스에 좀 더 가까운 것 같은데 제가 잘못 이해한건가요?만약 새로운 Fragment를 추가한다면 QuickBarComponent에서 새로운 Fragment를 처리하기 위한 함수를 계속 해서 늘려나가야 되는 건가요?일단 제가 이해한 내용은 InventoryItemFragment는 아이템의 종류를 정의한 것 뿐이고 QuickBarComponent에서 이 Fragment의 종류에 따라 "아이템을 사용한다." 라는 동작을 처리한다. 라는 과정으로 이해했습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D 왜틀
안녕하세요, 큰돌님.http://boj.kr/d79121f090df454eb46693fcd385e6671-D 회문 문제인데, 저는 vector를 사용해서 풀어보았습니다.하지만 어떤 문자열을 넣어도 항상 1(회문)을 출력하여 틀리게 됩니다. 어느 부분이 틀린 건가요?그리고 제가 배열이 나오면 항상 벡터를 사용하려고 하는데 좋지 않은 습관일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모리초과 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 제가 처음에 풀 때 map을 사용해서 위치, 누적경로를 담아 풀이했는데 메모리가 초과되었다고 합니다. 지레짐작으로는 경로를 계속 복사하는 과정에서 vector<int> tmp = path; // 기존 경로 복사 메모리가 누적되는거 같은데, 처음부터 이 방법이 메모리 초과이겠다..!라고 판단하는 방법이 있을까요? 아래는 제 코드입니다#include <iostream> #include <vector> #include <queue> #include <unordered_map> #include <algorithm> using namespace std; const int MAX = 100000; const int MIN = 0; int visited[MAX + 4]; struct Pair { int loc; // 현재 위치 vector<int> path; // 누적 경로 Pair(int l, vector<int> p) : loc(l), path(p) {} }; int main() { int n, m; cin >> n >> m; unordered_map<int, vector<int>> map; queue<Pair> q; vector<int> fPath; fPath.push_back(n); q.push(Pair(n, fPath)); visited[n] = 1; map[n] = fPath; while (!q.empty()) { Pair p = q.front(); q.pop(); int here = p.loc; vector<int> path = p.path; if (here == m) { break; } for (int there : {here + 1, here - 1, here * 2}) { if (there >= MIN && there <= MAX) { if (visited[there] == 0) { visited[there] = visited[here] + 1; vector<int> tmp = path; // 기존 경로 복사 tmp.push_back(there); q.push(Pair(there, tmp)); map[there] = tmp; } } } } if (n == m) { cout << 0 << endl; } else { cout << visited[m] - 1 << endl; } for (int p : map[m]) { cout << p << " "; } return 0; }
-
미해결[게임 프로그래머 도약반] DirectX11 입문
'C\ .... ......lib'은 올바른 win32에플리케이션이 아닙니다.
'C\.... ......lib'프로그램을 시작할 수 없습니다.'C\ .... ......lib'은 올바른 win32에플리케이션이 아닙니다. 뭐 때문에 그러는 건가요