묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
당근마켓 문제 질문있습니다!
안녕하세요 큰돌님 BFS강의 누구보다 쉽게 알려주셔서 감사합니다. 강의를 듣던 중 질문이 생겼는데요.개념 및 교안에서 최적의 거리는 visited[목적지] -1 을 하셨는데,당근마켓 문제에서는 visited[목적지y][목적지x] -1을 하지 않으신 이유가 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
당근마켓 엔지니어 문제 질문!
안녕하세요 코드를 짜던중에 뭔가 의도대로 안되어 질문드립니다.문제를 보고 생각해서 아래와 같이 만들었는데요.이후 쌤의 정답과 비교해도 어느 부분이 달라서 의도대로 안되는지 궁금합니다. #include <bits/stdc++.h> using namespace std; int n, m, ret, qx, qy, nx, ny, sx, sy, cx, cy; int visited[101][101]; int a[101][101]; vector<int> adj[101]; int dy[] = {-1, 0, 1, 0}; int dx[] = {0, 1, 0, -1}; void bfs(int y, int x){ queue<pair<int,int>> q; visited[y][x] = 1; q.push({y, x}); while(q.size()){ tie(qy, qx) = q.front(); q.pop(); for(int i = 0; i < 4; i++){ ny = qy + dy[i]; nx = qx + dx[i]; if(ny < 0 || ny >= n || nx < 0 || nx >= m || a[ny][nx] == 0) continue; if(visited[ny][nx]) continue; visited[ny][nx] = visited[qy][qx] + 1; q.push({ny,nx}); } } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cin >> a[i][j]; } } cin >> sy >> sx; cin >> cy >> cx; bfs(sy,sx); cout << visited[cy][cx] << "\n"; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cout << visited[i][j] << ' '; } cout << "\n"; } }
-
미해결홍정모의 따라하며 배우는 C++
5분 17~5분 34초 객체 잘림 질문
안녕하세요. 저도 객체 잘림에 대한 의문이 들어 durams 님의 질문을 보고 나서 나름대로 정리를 해보고 있는데 (durams 님이 질문에 작성하는 코드)class MyArray { private: int m_data[5]; public: int& operator [](const int& index) { if (index < 0 || 5 <= index) { ArrayException e; cout << &e << endl; throw e; } return m_data[index]; } }; void doSomething() { MyArray my_array; try { my_array[100]; } catch (Exception& e) { cout << "doSomething()" << endl; cout << &e << endl; e.report(); throw e; } } int main() { try { doSomething(); } catch (Exception& e) { cout << "main()" << endl; cout << &e << endl; e.report(); } return 0; } catch (Exception& e) { cout << "doSomething()" << endl; cout <<"catch 참조 변수 주소: " << &e << endl; e.report(); throw e; }위의 코드를 설명해보면, (Exception& e)는 throw된 객체의 참조이고 위의 throw e;의 e는 throw 될 때 e가 참조하고 있는 변수를 '복사 생성'한 독립적인 객체다 또한 'throw;될 경우 복사 생성하지 않고, catch에서 잡은 예외 객체를 그대로 다시 던지는 것'이다 즉, catch의 &는 부모 type의 매개 변수를 참조 없이 선언하여 객체 잘림이 될 경우를 예방하는 것이다.위의 설명들이 맞을까요?그렇다면 5 분 17초에서 임시 객체를 throw하고 있고 매개 변수는 참조의 형태를 가지고 있기 때문에 객체 잘림이라는 설명은 맞지 않고 다형성의 자식의 객체를 부모의 참조로 조작하는 경우인 것 아닌가요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
64.애니메이션 강의의, AssimpTool 에서 FBX 애니매이션 데이터를 옮길 때의 강의 오류가 있는 것 같습니다.
문제는 해결했지만, 강의에 큰 오류가 있는 것 같아, 강의를 듣는 분들에게 공유하는 것이 좋다 생각돼서 글을 작성했습니다. 강의의 Transform 코드가 미흡하다 생각해서, [LH, row_major, 요우->피치->롤] 을 전제로 하는 Transform ( Vec3, Vec4, Matrix3x3, Matrix4x4, Quaternion ) 을 다른 교재(이득우저 게임수학) 를 참조하여, 강의 코드에 적용해서 공부하고 있었습니다. 문제없이 잘 진행되다, 65.애니매이션 #2 에서 AssimpTool 로 FBX를 변환한 데이터를 애니매이션 진행할시, 로테이션이 반대로 되는 문제가 있었습니다. 이틀에 걸려 문제 원인을 찾았는데, 원인 코드는 아래와 같습니다 (강의 코드의 AssimpTool 프로젝트의 Utils 파일의 Converter.cpp 의 내용) /*std::shared_ptr<asAnimationNode> Converter::ParseAnimationNode(shared_ptr<asAnimation> animation, aiNodeAnim* srcNode){ std::shared_ptr<asAnimationNode> node = make_shared<asAnimationNode>(); node->name = srcNode->mNodeName; uint32 keyCount = max(max(srcNode->mNumPositionKeys, srcNode->mNumScalingKeys), srcNode->mNumRotationKeys); for (uint32 k = 0; k < keyCount; k++) { asKeyframeData frameData; bool found = false; uint32 t = node->keyframe.size(); // Position if (::fabsf((float)srcNode->mPositionKeys[k].mTime - (float)t) <= 0.0001f) { aiVectorKey key = srcNode->mPositionKeys[k]; frameData.time = (float)key.mTime; ::memcpy_s(&frameData.translation, sizeof(Vec3), &key.mValue, sizeof(aiVector3D)); found = true; } // Rotation if (::fabsf((float)srcNode->mRotationKeys[k].mTime - (float)t) <= 0.0001f) { aiQuatKey key = srcNode->mRotationKeys[k]; frameData.time = (float)key.mTime; frameData.rotation.x = key.mValue.x; frameData.rotation.y = key.mValue.y; frameData.rotation.z = key.mValue.z; frameData.rotation.w = key.mValue.w; found = true; } */ ==>> 위 코드에서, Quaternion 로테이션을 전치하기 위해, x, y, z 의 부호를 거꾸로 하는 코드가 필요합니다. 수정한 제 코드에는 아래와 같습니다 frameData.rotation.X = -key.mValue.x; frameData.rotation.Y = -key.mValue.y; frameData.rotation.Z = -key.mValue.z; frameData.rotation.W = key.mValue.w; 저렇게 코드를 수정하니, (LH, row_major) 를 전제로 하는 Transform 코드에서 잘 작동하더군요. 물론 강의의 DirectX::SimpleMath 를 바탕으로 만들어진 Transform 을 사용하면 아무 문제 없습니다.제가 SimpleMath를 제대로 이해하지 못해서, 어떻게 강의 코드가 잘 작동하는지를 이해하지는 못했고, 여전히 의문이 남습니다. 강의에서도 FBX 데이터는 RH 를 전제로 만들어졌고, 강의는 LH 를 전제로 하기에, AssimpTool 에서 본 트랜스폼 데이터를 변환할 때에, 아래 강의 코드인 Converter::ReadModelData 에서,bone->transform = transform.Transpose();트랜스폼을 전치합니다. Converter::ReadKeyframeData 에서도, if (findNode == nullptr) 에서도transform = transform.Transpose();로 전치를 하는데,앞서 제가 수정했던 else (애니매이션 데이터가 있는 부분) 에서는 전치 (rotation을 거꾸로 전환하는 코드)가 누락됐습니다. 정리하면, 강의의 일부 코드에서는, RH -> LH 를 위한 전치(로테이션 거꾸로) 코드가 있는데, 일부 코드에서는 전치 코드가 없는데도, 강의 코드는 잘 작동한다는 겁니다. 아무튼 제 문제는 해결됐습니다. 강의를 보다 혼동하실 분들이 제 글을 참고했으면 좋겠네요. 제 코드를 담은 깃허브 링크도 공유합니다https://github.com/HeeTaeKim996/Learning_DirectX11_3D
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
조합 표현 방식 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님 ! 조합을 직접 그려보라고 하셔서, 직접 그림으로 표현해보다 궁금한게 생겨 질문드립니다. 타고 내려가다가 c(2, [0,1,2]) 해당 부분에서 , start = 1 i=2 인 상태에서 b.pop_back()을 진행하면, 백터 b에만 영향을 미치는거 아닌가요? 왜 i--를 해주지 않아서 i =2로 그대로 남아 있는데, C(3, [0,1,3])이 될 수 있는지 궁금합니다 .ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
삼성전자 코딩테스트 대비할 때
안녕하세요 선생님, 저는 제목과 같이 1순위 희망 기업은 삼성전자이고 이후에도 제조업 기반의 회사 코딩테스트를 보게 될 거 같은데, 현재 학습하고 있는 4주차 비트마스킹을 우선적으로 학습하는 게 좋을지 아니면 그 뒤에 이분탐색이나 DP같은 문제를 먼저 학습하는 게 좋을지 여쭤보고 싶습니다. 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 반례 질문있습니다.
안녕하세요! 선생님 제가 짠 코드가 작동하지 않는 이유를 도저히 모르겠어서 질문 올립니다.답으로는 구름이 등장할 때까지 카운트를 답에 넣는식으로 작성해 주셨습니다.while(a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++;}1 5.c..c-> -1 0 1 2 0 -1-> -1 0 1 2 0 1http://boj.kr/c6c895e92431416a87ea2b64d7d50287 <- 제 코드입니다.저는 카운트를 끝까지 넣고 구름이 등장할 때마다 덮어씌우는 방식을 사용했습니다.1 5.c..c-> -1 0 1 2 3 4-> -1 0 1 2 0 1제가 상상할 수 있는 케이스는 다 정상 작동해서 어떤점이 문제인지 모르겠습니다.입력에서 마지막에 ' . '을 덜찍어줬을 경우 밖에 상상이 안갑니다..그냥 안되는 코드구나 하고 넘기기 찝찝해서 질문 남깁니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 질문 있습니다!!
먼저 좋은 강의 해주셔서 감사의 말씀 올립니다!!제가 첫 시도때 못 풀고 선생님 강의를 보고 그 다음날 다시 복습하는 과정에서 제 나름대로 로직을 찾아보고 테스트 케이스를 다 푼 코드를 만들었는데, 결과적으로 시간초과가 떴습니다.그래서 선생님 코드랑 비교해봤는데, 제가 생각했을 때 어디서 차이가 나는지 모르겠어서 이렇게 질문남깁니다. 읽어주셔서 감사합니다!!http://boj.kr/c8fc36cc6e9844a88c4495c0a7e8f3a4
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 17071 시간 초과
안녕하세요 선생님, 17071 문제를 푸는데 도저히 시간 초과가 해결이 되지 않아 질문드립니다. http://boj.kr/205232630d404eddbd6e2f0eeb5e5627 맨 처음에 주석에 달린 조건문이 없을 때는 메모리 초과가 났었고, 이를 해결하기 위해 조건문을 추가했어요. 다만 해당 방법으로 구현하니 시간 초과 문제가 나더라고요. 더더욱 최적화를 해야할 것 같은데, 현재 제 코드에서 더 최적화할 수 있는 방법이 뭔지 궁금합니다. 그리고 이 문제만 6시간 이상 붙잡고 있는데, 이게 맞는건지 잘 모르겠어요. 아예 아이디어가 생각이 안나면 이렇게까지 시간을 붙잡고 있지는 않고, 바로 아이디어 힌트를 얻으려고 할텐데 어느정도 될 것 같은 아이디어(==전체적인 설계나 시간 복잡도, 공간복잡도를 고려했을 때)로 구현했을 때 예상치 못한 동작을 한다던가, 메모리 초과나 시간 초과를 겪으면 제 방법에서 보완하기 위해 고민하다보면 시간이 너무 많이 지나있더라고요. 물론 선생님의 해설은 훌륭해서 잘 이해가고, 해당 방법으로 풀면 풀린다는 것도 잘 알아요.하지만 그건 제가 푼 게 아니라 선생님이 푼건데, 그저 이해하고 따라하기만 하면 낯선 아이디어를 떠올려야할 때 스스로 생각하는 힘이 부족한 느낌이 들더라고요. 그래서 계속 어떻게든 제 방법의 문제점을 찾아내고 해결하려고 붙잡게 되네요. 방법의 시작 자체가 잘못된 걸수도 있는데, 그렇다면 무엇이 잘못되었는지 파악하려고 하고요. (물론 잘 안돼요. 시간만 버리는 것 같습니다.) 실력도 별로 느는 것 같지 않아요. 연습 시간은 너무 많이 걸리고요. 코드도 너무 못 짜는 것 같아요.제 방식이나 생각이 잘못된건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 이해가지 않는 설명이 있어 질문드려요!
안녕하세요 선생님! 수업 듣는 도중 이해가 가지 않는 부분이 있어 질문드리게 되었어요. "8:19~ 이후" 부터 범위가 50만이기 때문에 50만 * 50만의 2차원 배열을 만들 수 없다고 설명해주셨어요. 하지만 만약 범위가 500 정도라면 2차원 배열을 만들어서 활용했을 것이다 라고 말씀해주셨고요. 저는 범위가 500일 때, 2차원 배열을 어떤 식으로 만들어서 활용하신다는건지 잘 이해하지 못했어요. arr[수빈이의 상태][동생의 상태] 로 만들어서 활용한다는 의미인 것으로 이해했고, 이 "상태" 라는 것은 이 문제의 경우 "위치, 즉 x값" 이라고 생각했어요. 그렇다면 예를 들어arr[1][3]은 수빈이가 x=1에 위치하고, 동생이 x=3에 위치할 때의 값이라는 건데, 그 "값"은 무엇을 의미하나요? 수빈이와 동생이 각각 해당 위치일 때의 시간을 의미하는건가요? 만약 '시간'을 의미하는게 맞다면, 저는 해당 배열을 활용하는 예시가 전혀 생각나지 않아서 질문드렸어요. 간단히 생각해보았을 때는 오히려 불필요한 행위가 될 것 같기도 하고요. 왜냐하면 저희가 궁금한것은 궁극적으로 arr[samePos][samePos] 일텐데 이 값을 알아내는 순간은 arr가 필요 없을 것 같아서요.결국 질문을 아주 간단하게 요약하면,"범위가 500 정도라면 2차원 배열을 만들어서 활용했을 것이라고 해주셨는데, 어떻게 활용한다는 건지 이해가 안갑니다. 활용 방안이 떠오르지 않아요" 입니다. 감사합니다.
-
해결됨[입문] Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발
강의 자료 pdf 다운로드 할 수 있을까요?
안녕하세요 강의 자료 pdf 다운로드 할 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 15686번 시간복잡도 질문 드립니다.
안녕하세요 선생님~!처음엔 15686번 문제를 bfs로 곁들여서(?) 풀었는데 시간초과가 나더라고요. 그래서 bfs를 사용하지 않고 푸니까 시간초과없이 문제가 정답처리 되었습니다. 정답 코드 : http://boj.kr/5fa47b86ba5246119038da418cfad011시간초과 났던 코드(bfs 사용) : http://boj.kr/ef1079acc43c4eb8ab9aeafe01d00bd2 이후 시간 초과가 났던 이유를 분석해봤는데, 제 생각은 아래와 같아요. 치킨집을 고르는 최대 개수 : 13C6 집의 최대 개수 : 100 13C6 * 100 = 171,600 (많이 여유로움) 하지만, bfs를 각 집마다 적용했으므로 (50 * 50) = 2500을 최대치로 잡고 더 곱해줘야 하므로 171,600 * 2500 = 629,000,000 따라서 시간 초과가 난다. 그래서 bfs를 사용하지 않고 abs를 사용해서 바로 거리를 계산하면 이 값이 최대 13이 되므로, 171,600 * 13 = 2,230,800 (여전히 여유로움)이라서 시간 초과 없이 통과되었다고 판단했어요. 제 질문은 아래와 같아요.bfs를 사용했을 때의 시간 복잡도 계산식에 오류가 없나요? (잘 계산한게 맞나요?)bfs를 사용하지 않을 때의 시간 복잡도 계산식에도 오류가 없나요? (잘 계산한게 맞나요?)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 15684 시간복잡도 질문드립니다.
안녕하세요 선생님! 결국 시간초과 문제를 해결했긴 했지만, 시간 복잡도를 어떻게 계산하는게 좋을지 궁금해서 질문드리려고 해요. 시간 초과가 났던 코드http://boj.kr/8fe9f1e620454720a985b58a993d229a통과 됐던 코드http://boj.kr/864f7c65db52442bada271fe193a2ec3기본적으로 선생님의 설명대로, 300C3 == 대략 4,500,000(450만) 은 반드시 든다고 가정했어요. 이때, 두 코드의 차이점은 다음과 같아요.movePlayer + isSamePosition 함수를 각기 사용하는가checkedPlayer 함수 하나를 사용하는가 만약 movePlayer + isSamePosition 를 사용한다면 제 생각에는 300 + 10 = 310 정도를 생각했고, 이로 인해 최종 시간 복잡도는 13억 5000만(450만 * 대략 300) 으로 생각했어요. 이는 13초 정도로 생각했고요. 하지만 checkedPlayer 함수를 사용하는 순간, 중간에 break 할 수 있어 300까지 계산할 일은 거의 없겠지만.. 정말 최악의 최악일 경우 n-1 player의 맨 h 행까지 계산해야할 수도 있을거라고 생각했어요. 그럼 결국 300까지 계산하게 되는거고, 이 또한 시간 복잡도가 13초 정도가 되는거고요.그래서 제 질문의 핵심은 다음과 같아요.시간 초과가 났던 코드, 통과한 코드의 시간 복잡도는 어떻게 계산해야하는가? 계산 결과 어떤 시간 복잡도를 가진다고 봐야하는가?checkedPlayer를 사용한다고 하더라도 최악의 경우에는 300번 가량을 계산해야하는 것은 마찬가지일 것 같은데, 왜 통과되는것인가? 물론 시간복잡도를 완전 정확히 계산할 수는 없지만, loop 횟수나 재귀함수의 호출횟수로 정량화하여 대략 예상하고 싶은데 이 예상치 조차 세워지지 않아서 혼란스러워 질문드렸어요 ㅜㅡㅜ
-
미해결홍정모의 따라하며 배우는 C++
Resource.h 코드 알려주세요
169.15.4170.15.5 등에서 cpp 파일은 있어서 따라 코드를 치면서 컴파일러 해보는데요.강의에서 Resource.h 코드를 몰라서 컴파일러 못하고 있어요.코드 알려주세요.컴파일러 해 보면서 확인하고 싶고, 강사님 의도를 이해하고 싶습니다. 감사합니다.
-
해결됨스스로 프로그래밍 하는 능력을 키우는 C++
연습문제
아스키코드 강의부터 연습문제가 안 나오는데 원래 그런가요? 강의에서 숙제를 들가면 권한이 없다고 안 뜨네욤
-
미해결[게임 프로그래머 도약반] DirectX11 입문
SkyDemo에서 카메라 입력이 작동하지 않는 문제
SkyBox 실습에서 화면에 텍스처 렌더링까지는 잘 되는데, 문제는 실행했을 때 WASD 입력을 넣어도 카메라가 움직이질 않습니다. 회전 행렬이 잘못 적용되어서 텍스처가 함께 이동하는 건가 해서 Update에 아래와 같이 회전을 직접 줘봤는데, 이 때는 카메라 회전이 되어 하늘이 움직이는 것처럼 잘 보입니다. _camera->GetTransform()->SetRotation(Vec3(0, _rotation, 0)); _rotation += 0.25f * DT; 제공해주신 A-34)+SkyBox에서 다른 데모는 카메라 입력이 잘 되는데, SkyDemo만 동일한 문제가 발생했습니다. 마찬가지로 카메라 입력이 먹히질 않습니다. 중단점을 찍고 디버깅을 해봐도 InputManager::Update()와 CameraScript::Update()가 매 프레임 정상적으로 호출되고 있었습니다.혹시 SkyDemo의 특정 초기화 순서나 렌더링 파이프라인 설정이 다른 데모와 달라서 입력 이벤트 처리에 영향을 주는 건 아닌지 궁금합니다.아직 해결하지 못해서 질문을 올립니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-G a[i]로 입력을 받는 이유 질문
2-G a[i]로 입력을 받으시는데 다른 문제들과 연계되는 특별한 이유가 있는지 궁금합니다
-
미해결[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
이제 강의 더 안올라오나요?
전에 사놓고 이제 들으려고 봤는데몬스터 AI부터는 비어있더라구요커리큘럼이 다 안끝난 것 같은데 강의 더 안올라오나요??
-
해결됨Windows System 프로그래밍
7강 스레드제어 강의, 26분경 질문입니다.
기존 SetEvent(pThreadDescList[i].hEventList[0])에서 .hEventList[i]로 바꾸셨는데 기존대로 .hEventList[0]로 해야 핸들리스트에서 0번째에 해당하는 핸들을 받을 수 있는게 아닌가해서 질문드립니다. (해당 코드에서 [i]면 0번째 스레드는 0번째 핸들, 1번째 스레드는 1번째 핸들,,을 받아오는것 같아서..)
-
미해결실전! 언리얼 소울라이크 개발: A to Z
블로킹 시 피격 이펙트 오류?
블로킹 시 데미지는 감쇠되지만, 피격 이펙트는 일반 피격 효과로 재생됩니다. 아래는 예시입니다. 현재 스태미나는 35이다.블로킹에 성공한다.TakeDamage()에서 스태미나가 20 소모되어, 남은 스태미나는 15가 된다.ImpactEffect()에서 CanPerformAttackBlocking()이 호출된다.CanPerformAttackBlocking()은 스태미나가 20 이상인지 확인한다.현재 스태미나는 15로 20 미만이다.따라서 데미지는 막았지만, 피격 이펙트와 사운드는 재생된다.