inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

6-I 타입 관련 질문드립니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

모든 타입을 long long 타입으로 바꿨더니 성공을 하긴 했습니다!하지만 mid 부분을 int로 설정했을 경우엔 왜 안되는 것일까요...?mid가 아무리 커도 10억+10억보다는 작을 것이라 생각해서 int로 설정했는데, 이때는 오답이 나왔습니다...!!

  • c++
  • 코딩-테스트
너무어려워 댓글 1 좋아요 1 조회수 187

15.1 소유권 이동 관련 질문

해결됨

홍정모의 따라하며 배우는 C++

15.1 강의에서 16분 20초 부근에 AutoPtr(AutoPtr &a) { m_ptr = a.m_ptr; // 이 부분 a.m_ptr = nullptr; // 이 부분 } AutoPtr& operator = (AutoPtr &a) { if (&a == this) return *this; delete m_ptr; m_ptr = a.m_ptr; // 이 부분 a.m_ptr = nullptr; // 이 부분 return *this; } 소유권 이동을 해주기 위해 AutoPtr 클래스에 위와 같이 복사생성자와 =연산자 오버로딩을 해준다고 하셨습니다. 그런데 이 때, 제가 "이 부분"이라고 주석처리 해놓은 부분을 보면 같은 명령을 수행하도록 되어있습니다. 왜 이렇게 두 번 해주는지 궁금합니다. 복사생성자에서 해주는 것과 연산자 오버로딩에서 해주는 것. 둘의 차이는 무엇인가요? 그리고 =연산자 오버로딩에서 return *this를 하는 이유도 궁금합니다.

  • c++
ii00 댓글 1 좋아요 1 조회수 213

7-A 한줄로 디버깅 하고 싶은데 혹시 이 부분 나눌 수 있을까요?

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

ret과 재귀로 호출하는 부분 최소 값으로 셋팅하는 결과를 실시간으로 보고 싶습니다. ret = min(ret, tsp(i, visited | (1 << i)) + dist[here][i]); 이 부분 나눌 수 있을까요? int temp = tsp(i,visited | (1<<i)) + dist[here][i]); if(ret > temp) ret = temp; 이런식으로 나누고 싶은데 어떻게 건드려야될지 모르겠습니다..

  • c++
  • 코딩-테스트
mch473700 댓글 2 좋아요 0 조회수 304

3-P 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/66b6d01488da4e168d9834f8bd0d6127 저는 조합을 이용해서 풀어보았는데 이 문제는 완전탐색으로 푸는게 더 나은 방법인가요??

  • c++
  • 코딩-테스트
ㄱㄷㄱ 댓글 1 좋아요 0 조회수 167

좌표계 변환 행렬 관련 문의드립니다.

해결됨

[게임 프로그래머 도약반] DirectX11 입문

안녕하세요, 이번 강의와 이전 강의(좌표계 변환 행렬)을 듣고, 좌표계 변환 행렬에서 '(B좌표계 기준) u,v,w의 성분'을 채우는 부분에 대해 제가 이해한 게 맞는지 확인차 문의드립니다. 로컬 좌표계에서 월드 좌표계로 변환할 경우. 월드 좌표의 단위벡터 U,V,W 는 각각 U(1,0,0) , V(0,10), W(0,0,1) 이고, 이를 이용해 로컬 좌표계의 단위 벡터(u,v,w)의 성분을 보면 u = ux*U + uy*V + uz*W v = vx*U + vy*V + vz*W w = wx*U + wy*V + wz*W U,V,W가 위의 단위 벡터이므로, 좌표계 변환 행렬을 채울 때 '(B좌표계 기준) u,v,w의 성분'에 로컬 좌표계의 단위벡터를 그대로 채우면 된다. 또한 u,v,w는 로컬 좌표계의 Right, Up, Look 벡터이므로 이를 그대로 채우는 거라고도 할 수 있다. 이번 강의의 약 21분 50초 즈음 내용. 로컬 좌표계가 월드 좌표계에서 Y축으로 45도 회전한 상태라면, 로컬 좌표계의 단위벡터도 월드 좌표계의 단위벡터 U,V,W에서 Y축으로 45도 회전했다고 볼 수 있으므로 y축 회전행렬을 적용한다. 월드 좌표계로 변환하는 게 아닌 A->B 변환이라면, B좌표계 기준에서 A좌표계의 단위 벡터 u는 u = ux*U + uy*V + uz*W(여기서 U,V,W는 월드 좌표계의 단위벡터가 아님)인데 , 항상 u = (ux, uy, yz)라고 할 수 없으므로 '(B좌표계 기준) u,v,w의 성분' 을 채울 때 A좌표계의 단위벡터(혹은 Right, Up, Look 벡터)를 그대로 채울 수 없다. 예로 u = (2,2,2) / U = (1,-1,0) / V = (0,1,0) / W = (0,0,1) 이라면 u = 2U + 4V + 2W이고, uy == 4 라면 u = (2,2,2)가 성립되지 않는다. 특히 3번은 틀린 듯 한데 제가 이해를 제대로 못 해서 맞다/틀리다를 판단하기가 어렵네요 ㅜ 질문에 대한 답변 외에도 표현상의 문제를 체크해주시는 것도 감사하겠습니다.

  • c++
  • directx
sjfriend4714 댓글 1 좋아요 0 조회수 497

언리얼 엔진 서버 관련 질문

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동

안녕하세요 강의 잘 들었습니다! 언리얼 iocp서버 강의는 찾을 수 없었는데 이렇게 강의해주셔서 감사합니다ㅠㅠ 강의를 다 듣고 나니 궁금한 것이 생겨 질문합니다!언리얼 엔진으로 멀티게임을 제작할 때, iocp 서버를 제작하여 연결하려면 에픽 런처에서 다운받은 언리얼 엔진이 아닌 언리얼 깃허브에서 릴리즈 버전을 다운받아 개발하여야한다는 말을 들었는데 사실인가요? 데디케이트 서버를 사용하지 않고 iocp 서버를 자체적으로 제작하여 연결하는 것을 기준으로 질문드립니다. 해당 강의를 따라 서버를 제작한다면 에픽 런처에서 다운받은 언리얼 엔진(5.3)으로 iocp서버를 제작하여 멀티게임을 만들 수 있을까요?유용한 강의 영상 감사합니다!

  • c++
  • unreal-engine
  • windows-server
또아보카 댓글 1 좋아요 0 조회수 466

4-H 비트마스킹 질문 있습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요, 강의 잘 듣고 있습니다. 문제를 읽고, 스스로 짜보고 있습니다. 그런데 비트마스킹 부분에서 제가 생각한 것처럼 동작하지 않아 무슨 부분이 문제인지 궁금합니다. 아무리 print를 찍어서 찾아보려고 해도 찾지 못해 질문드립니다. 문제 부분 // DFS 함수 (18, 19번째 줄) if(a[y][x] & (1 << i)) continue; _ret += dfs(ny, nx); http://boj.kr/b423ee8869844758a31b0c3c5d67fd49

  • c++
  • 코딩-테스트
땅콩땡콩 댓글 1 좋아요 0 조회수 215

vector 순회중 삽입/삭제 해결법에 대해 질문드립니다

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

강의 정말 잘듣고 있습니다!! vector 순회중에 데이터 삽입/삭제가 일어나면 크래시가 난다는건 이해했습니다! 근데 이를 스마트 포인터를 사용하거나 생포인터에 아이디 방식을 사용하여 아이디로 상대가 살아있는지 확인하는 법이 있다고 하셨는데 스마트 포인터로는 어떻게 해결이 되는지 정확히 이해가 되지 않아 질문드립니다. 아무래도 스마트 포인터를 사용하고 vector 에 들어있는 스마트 포인터는 생존해있다는게 보장이 되기 때문에 맘편히 사용해도 된다는 것 때문에 해결이 되나 생각을 해보았습니다. vector<shared_ptr<int>> v; void Test1() { shared_ptr<int> d = make_shared<int>(); *d = 4; v.push_back(d); } void Test2() { v.pop_back(); } int main() { { shared_ptr<int> a = make_shared<int>(); shared_ptr<int> b = make_shared<int>(); shared_ptr<int> c = make_shared<int>(); *a = 1; *b = 2; *c = 3; v.push_back(a); v.push_back(b); v.push_back(c); } vector<shared_ptr<int>>& temp = v; for (auto& asd : temp) { Test2(); cout << *asd << endl; } } 하지만 이렇게 테스트를 해본 결과 삽입할때는 크래시, 삭제할때는 날라간 쓰레기 값을 사용합니다. 당연히 제가 뭔가를 잘못 생각하고 있겠지만 고민하다가 답이 나오질 않아 질문 드립니다!

  • c++
wlsdn3740 댓글 1 좋아요 0 조회수 297

교안 p176 질문 드립니다

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌님 😀 교안 p176에 1 0진법을 2진법으로 바꾸는 코드에서 #include <bits/stdc++.h> using namespace std; vector<int> v; int main() { int n = 100; int b = 2; while (n > 1) { v.push_back(n % b); n /= b; } if (n == 1) v.push_back(1); // 마지막 몫이 1일 때 reverse(v.begin(), v.end()); for (int a : v) { if (a >= 10) // 이 조건은 16진법 변환을 위해 필요함. { cout << char(a + 55); // char(a + 55)에서 a가 10이면 char(65)가 되서 'A'가 된다. } // 16진법은 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}로 표현하는 방법 else { cout << a; } } return 0; } while문에서 조건을 n > 1 로 하신 이유가 궁금합니다! while (n > 1) { v.push_back(n % b); n /= b; } if (n == 1) v.push_back(1); // 마지막 몫이 1일 때 이 부분을 while (n >= 1) { v.push_back(n % b); n /= b; } 이렇게 바꾸면 문제가 생길까요?? 제가 n에 여러 값을 넣어봤을 땐 문제가 없었는데 반례가 있다면 알려주시면 감사하겠습니다!

  • c++
  • 코딩-테스트
Clain 댓글 1 좋아요 0 조회수 169

루키스님 질문 있습니다

해결됨

[게임 프로그래머 도약반] DirectX11 입문

1. 클래스 생성자 매개변수가 레퍼런스인 스타일은 Init()으로 데이터를 초기화 하는 스타일보다 불편하다고 생각을 하는데(레퍼런스 때문에 헤더파일에 선언만 하는게 힘들다던지) 제 생각이 맞나요? 어떤 것이 표준에 가깝나요? 2. 저만의 게임 엔진을 구축하는게 목표라서 코드를 적으면서 했습니다만 난이도가 너무 높아서 좌절했습니다 개인적으로 DirectX를 이해하는것보다 전체적인 소스 아키텍처가 더 어려웠습니다 이 정도 소스 난이도는 프로그래머라면 쉽게 이해 가능한 수준인건가요? 아니면 어려운게 맞는건가요? 그리고 게임 엔진을 만들려고 한다면 이 강의 이후 게임 엔진 아키텍쳐 책이나 디자인 패턴을 열심히 공부하는 방향이 맞을까요? 3. 루키스님의 소스를 참고해서 게임 엔진을 구축하고 그 엔진을 이용해서 간단한 게임을 만든다면 저작권 부분이 어떻게 될지 궁금합니다 질문이 많아서 죄송합니다 좋은 강의에 항상 감사하게 생각하고 있습니다

  • c++
  • directx
댓글 1 좋아요 0 조회수 343

메모리 초과가 나는데 선생님 코드와 어디가 다른지 모르겠습니다..ㅠㅠ

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

#include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <map> #include <queue> #include <string> #include <math.h> #include <cstring> #include <stack> using namespace std; int arr[3] = {}; int dmg[6][3] = { {1,3,9},{1,9,3},{9,1,3}, {9,3,1},{3,1,9},{3,9,1} }; int visited[64][64][64] = {}; struct A { int a; int b; int c; }; queue<A> mq; void BFS() { while (!mq.empty()) { int x = mq.front().a; int y = mq.front().b; int z = mq.front().c; mq.pop(); if (visited[0][0][0]) { break; } for (int i = 0; i < 6; i++) { int nx = x - dmg[i][0]; if (nx < 0) { nx = 0; } int ny = y - dmg[i][1]; if (ny < 0) { ny = 0; } int nz = z - dmg[i][2]; if (nz < 0) { nz = 0; } if (visited[nx][ny][nz] != true) { mq.push({ nx,ny,nz }); visited[nx][ny][nz] = visited[x][y][z] + 1; } } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; for (int i = 0; i < N; i++) { cin >> arr[i]; } mq.push({ arr[0],arr[1],arr[2] }); visited[arr[0]][arr[1]][arr[2]] = 1; BFS(); cout << visited[0][0][0]-1; } 메모리 초과가 나는데 아무리 봐도 어디가 나는지 모르겠습니다ㅜㅜ..

  • c++
  • 코딩-테스트
안뇽 댓글 1 좋아요 0 조회수 313

멘토링 신청 질문

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동

혹시 이번에 올라온 Live 강의 신청이 안되는거 같은데 자리가 꽉차서 그런건가요??

  • c++
  • unreal-engine
  • windows-server
댓글 1 좋아요 0 조회수 286

3-H 메모리초과

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/8e44c6b66d4644008651ce44ab448ea8 res.push_back(k); for (int i = prev[k]; i != n; i = prev[i]) { res.push_back(i); } 이 부분으로 인해서 메모리초과가 발생하는 거 같은데 왜 발생하는지 이유를 잘 모르겠습니다.

  • c++
  • 코딩-테스트
ㄱㄷㄱ 댓글 1 좋아요 0 조회수 232

2-L 질문있습니다

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/96d35c5b502442c08daba88212df08c4 큰돌님 코드를 보니까 string 사용하신 부분 외에는 거의 동일한 것 같은데 자꾸 3%에서 틀렸다고 나와요. 이유를 알 수 있을까요?

  • c++
  • 코딩-테스트
서진배 댓글 1 좋아요 1 조회수 288

5-I 질문있습니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

투포인터를 하기 위해서 정렬을 사용하셨는데, 문제를 읽어보면 '... a1, a2, ..., an으로 이루어진 수열이 있다. ... 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는' 이라는 문구가 있어서, 정렬을 하게 되는 순간 기존의 index 순서가 바뀌기 때문에 함부로 정렬을 하면 안되는 문제 아닌가요?

  • c++
  • 코딩-테스트
Park SungEun 댓글 1 좋아요 0 조회수 175

반례를 못찾겠습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

다음과 같이 선생님 코드를 참고하여 구현했는데 어디서 틀렸는지 모르겠습니다. http://boj.kr/ff14d895e1de44258e860f9df1dc81d9 그리고 수업을 들을 때 문제 풀이가 감도 안잡히면 해설을 조금 보고 풀이를 해본 다음에 그래도 안되면 코드를 참고해서 구현하는데 이런 방식으로 들어도 될까요?

  • c++
  • 코딩-테스트
donald010 댓글 1 좋아요 1 조회수 234

8-B 질문

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 강사님, 코드 관련해서 질문이 있습니다. 강사님께선 int &ret = dp[STR][INT]; if(ret != -1) return ret; 방식으로 코드를 작성하셨고, 저는 if (dp[strength][intelli] != -1) return dp[strength][intelli]; 방식으로 코드를 작성했습니다. 그런데, 제 코드는 계속 오류가 납니다. 어떤 부분에서 오류가 나는지 알려주시면 감사하겠습니다. http://boj.kr/4e74c937e8b440c3989b1cfcceb69f53

  • c++
  • 코딩-테스트
lego0313 댓글 1 좋아요 0 조회수 205

const와 extern

미해결

홍정모의 따라하며 배우는 C++

안녕하세요 const가 변수의 외부연결을 막는 것 같은 상황이 생기는 거 같아 이렇게 여쭤봅니다. 파일구조는 vars.cpp -> header.h -> main.cpp&test.cpp입니다. vars.cpp header.h main.cpp test.cpp 의도한대로 잘 작동하며 출력화면은 아래와 같습니다. 그런데 여기서 vars.cpp에서 nmsp_a변수를 int에서 const int형으로 바꾸고, header.h에서도 nmsp_a를 extern int에서 extern const int형으로 바꾸고 돌려보면 아래와 같이 오류가 발생합니다. 차이점은 equipe namespace안의 int nmsp_a변수를 그냥 int에서 const int로 바꾼 것 뿐인데 충돌이 일어나는 것처럼 보입니다. const와의 어떠한 문제 때문인 것으로 추측되는데 vars.cpp의 namespace안의 nmsp_a변수에는 extern을 붙이지 않아왔고 nmsp_a를 가져다끌어 쓰는 header.h에서만 extern을 붙여줬는데 아래 사진과 같이 vars.cpp의 nmsp_a 변수에 오류를 발생시키던 const를 붙이되 extern또한 추가로 붙여주면 정상출력을 합니다. const를 안 붙이는 상황에선, 변수를 정의해두는 vars.cpp에서는 extern를 쓰지않고 이를 가져오는 주체인 header.h에만 extern를 붙여도 정상작동했지만 const를 붙이는 상황에선, vars.cpp, header.h 두 곳 모두 각각 변수에 extern을 붙여줘야한다는 결론을 얻었습니다. 말이 좀 복잡한데 정리하자면 왜 변수에 const가 없으면 vars.cpp에는 extern을 안 붙여도 되고 왜 변수에 const가 있으면 vars.cpp에도 extern을 꼭 달아줘야하는지 그런 차이가 왜 생기는지 궁금합니다. 감사합니다.

  • c++
Echapper4 댓글 1 좋아요 1 조회수 505

교안에 제시된 string - split()의 효율성 관련 질문드립니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요, 큰돌님! 교안에서 제시된 내용을 기반으로 알고리즘 문제를 풀다가 궁금한 부분이 생겨 질문드렸습니다. 교안에서 제시된 문자열 - split 함수는 아래와 같습니다. vector<string> split(string input, string delimiter) { vector<string> ret; long long pos = 0; string token = ""; while((pos = input.find(delimiter)) != string::npos) { token = input.substr(0, pos); ret.push_back(token); input.erase(0, pos + delimiter.length()); } ret.push_back(input); return ret; } 저는 위 함수를 응용하거나 문제를 해결하는데, 오늘 백준의 5430번 문제를 해결할 때도 위와 같은 로직의 코드를 작성하여 문자열 split을 시도하였습니다. // I-2. 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. cin >> _p; // I-3. 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. cin >> _n; // I-4. 다음 줄에는 [x1, ... xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. cin >> _x; string origin = _x.substr(1, _x.size() - 2); vector<string> vs_x(_n); if(origin.empty()) { } else { int pos = 0; int cycle = 0; while((pos = origin.find(',')) != string::npos) { string tmp = origin.substr(0, pos); vs_x[cycle++] = tmp; origin.erase(0, pos + 1); } vs_x[cycle] = origin; } 코드에 대해 부연설명을 드리자면, 입력을 통해 문자열을 받게 되면, 해당 문자열의 첫번째와 마지막 인덱스를 제외한 문자열을 origin 에 저장한 후, 이 문자열 origin 을 컴마(,)를 기준으로 split 하였습니다. 예를 들어, [1, 2, 3]이라는 문자열을 입력( _x )으로 받았다면, 변수 origin 에 1,2,3을 저장한 후 컴마를 기준으로 문자열을 split할 수 있습니다. 하지만, 위 코드와 함께 문제를 해결하고자 할 때, 지속적으로 시간 초과 문제가 발생하였습니다. 따라서 split 함수를 다음과 같은 로직으로 변경한 후 답안을 다시 제출하였으며, 그 결과 시간 초과가 발생하지 않고 문제를 해결할 수 있었습니다. // I-2. 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. cin >> _p; // I-3. 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. cin >> _n; // I-4. 다음 줄에는 [x1, ... xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. cin >> _x; string token = ""; vector<string> vs_x(_n); int cycle = 0; for(int j = 0; j < _x.length(); ++j) { if(isdigit(_x[j])) { token += _x[j]; } else { if(!token.empty()) { vs_x[cycle++] = token; token = ""; } } } 제가 궁금한 것은 위에 제시된 split에 대한 두 개의 로직이 왜 효율성 차이가 나는지 잘 모르겠습니다.. origin.erase(0, pos + 1) 이 O(n)의 시간 복잡도를 요구하면서, 첫 번째 로직은 O(n^2)의 시간 복잡도와 두 번째 로직은 O(n)의 시간 복잡도를 필요로 할 수도 있겠다는 생각이 들기도 하지만, 정확하게 어떤 부분이 큰 차이를 불러 일으키는지 잘 모르겠습니다. 감사합니다!

  • c++
  • 코딩-테스트
박승훈 댓글 2 좋아요 0 조회수 315

3-A 질문있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/b8eaa84254ba4993b722f0482d6c1280 조합 함수를 다음 요소를 선택한다, 안한다로 나눠 뻗어나가도록 재귀를 구현하였습니다.. 1개를 택할 때는 따로 구해주었는데 어떤 걸 놓친 걸까요? 테스트케이스는 모두 통과하였는데 오답입니다

  • c++
  • 코딩-테스트
최은정 ◡̎ 댓글 1 좋아요 1 조회수 171

인기 태그

인프런 TOP Writers

주간 인기글