안녕하세요. 현재 섹션 12의 Weapon Animation 영상을 수강하고 있습니다. Haker님의 실행 결과와는 다르게, Mannequin의 AnimClass를 세팅해줘도 Pistol의 AnimLayer가 적용되지 않는 오류가 있어 질문 드리게 되었습니다. 디버깅 포인트로 확인해보니 ABP_PistolAnimLayers가 DefaultLayer에 세팅되지 못하고 있었습니다. 그래서 섹션 12강을 처음부터 다시 점검해보고 있는데, Lyra에서 AnimLayers를 가져올 때 Haker님은 Feminine 버전을 들고 왔지만 저는 기본 AnimLayers를 들고 왔습니다. 그 부분을 제외하고는 다 동일한 것으로 확인되는데, 혹시 기본 버전을 들고 오면 이런 에러가 발생하는 것일까요? https://coal-schooner-81d.notion.site/Section-10-11524bba9b048044bd6deb6fc79de295?pvs=4 강의를 보며 정리하는 노션 페이지입니다. 혹시 진행 상황에서 문제가 있는 부분이 보인다면 알려주시면 감사하겠습니다...
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 설명하신 것과 비슷하게 코드를 작성을 했고 테스트 케이스도 통과를 해서 제출을 했더니 그냥 광탈을 하네요... 일단 강의 보고 제출을 했지만 왜 이 코드가 틀렸는지 모르겠어서 질문드립니다.. 실수를 한건지 그냥 논리 자체가 틀린건지 모르겠네요.. 무식한 질문인 거 알지만 너무 모르겠어서 질문드립니다ㅜㅜ #include <bits/stdc++.h> using namespace std; int N, M, T, ret, x, d, k; int ty, tx; int dy[] = { -1, 0, 1, 0 }; int dx[] = { 0, 1, 0, -1 }; int a[54][54], visited[54][54]; void rotate(int* arr, int n) { int temp[54] = { 0 }; for (int i = 0; i < M; i++) { temp[(i + n) % M] = arr[i]; } memcpy(arr, temp, sizeof(temp)); return; } void rotate_r(int* arr, int n) { int temp[54] = { 0 }; for (int i = 0; i < M; i++) { temp[(i - n + M) % M] = arr[i]; } memcpy(arr, temp, sizeof(temp)); return; } bool bfs(int sy, int sx, int num) { visited[sy][sx] = 1; queue<pair<int, int>> q; q.push({ sy, sx }); bool flag = 0; while (q.size()) { tie(ty, tx) = q.front(); q.pop(); for (int i = 0; i < 4; i++) { int ny = ty + dy[i]; int nx = tx + dx[i]; if (ny < 0 || ny >= N ||visited[ny][nx]) continue; if (nx < 0 || nx >= M) { //인덱스를 이동해야함.. 원형이기 때문에 나가지 않음 // 0 -> 4, 4 -> 0으로 바뀜 if (nx < 0) { nx = M-1; } else if (nx >= M) { nx = 0; } } if (a[ny][nx] != num) continue; visited[ny][nx] = 1; q.push({ ny, nx }); a[ty][tx] = 0; a[ny][nx] = 0; flag = 1; } } return flag; } int main() { cin >> N >> M >> T; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cin >> a[i][j]; } } while (T--) { cin >> x >> d >> k; if (d == 0) { rotate(a[x - 1], k); while (2 * x <= N) { int temp = x * 2; rotate(a[temp - 1], k); x++; } } else { rotate_r(a[x - 1], k); while (2 * x <= N) { int temp = x * 2; rotate_r(a[temp - 1], k); x++; } } memset(visited, 0, sizeof(visited)); int sum = 0; int cnt = 0; bool flag = 0; bool check = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { sum += a[i][j]; if (a[i][j] != 0) { cnt++; } if (!visited[i][j] && a[i][j] != 0) { flag = bfs(i, j, a[i][j]); //한번이라도 지운다면 } if (flag) { check = 1; } } } if (!check) { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { double aver = (double)sum / (double)cnt; if (a[i][j] != 0 && (double)a[i][j] > aver) { a[i][j] = a[i][j] - 1; } else if (a[i][j] != 0 && (double)a[i][j] < aver) { a[i][j] = a[i][j] + 1; } } } } //a[0][0]; } //a[0][0]; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { ret += a[i][j]; } } cout << ret; }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! t가 2번째에서 t가 1번째 옷의 종류와 겹칠 수 있을 경우의 수가 있을 거 같아요 _map.clear()는 안해도 되는건가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 교안을 공부하다가 진도가 잘 안나가서 일단 잘모르는 건 넘어가고 문법의 경우에는 다시 찾아볼생각으로 교안은 가볍게 한번씩 쳐보기도 하고 개념강의 보면서 문제 풀려고 하는데 맞게 하고 있는 걸까요? 그리고 수학적 사고력이 부족한 거 같으면 이산수학 같은 전공수학공부도 따로 해야 할까요?
안녕하세요 큰돌님..! 이번 넷마블 코테 공채를 보고 왔는데 5문제 중 3문제를 맞췄습니다. 3문제는 3시간중 1시간안에 풀었고 뒤에 2문제를 2시간 고민하다 못 풀었습니다. 난이도는 3문제는 쉬운편이었다고 생각하는데, 이정도면 서류는 봐줄까요..? 물론 시험마다 달라서 발표 전까지 확실한 것은 없겠지만 코테 강사이신 큰돌님의 감?으로 대충 말씀주셔도 괜찮습니다!!
for(int i = 1; i <= 3; i++){ ret = min(ret, 1 + f(pos, mod(x + i * flag), y, z, flag)); ret = min(ret, 1 + f(pos, mod(x + i flag), mod(y + i flag), z, flag)); ret = min(ret, 1 + f(pos, mod(x + i flag), mod(y + i flag), mod(z + i * flag), flag)); } f 함수의 저 부분에서 탐색 할때 1~3번 돌리는 경우, 현재 위치부터 현재 위치+3까지 변하는 경우를 다 체크하는데 왜 방향은 그대로 두는건가요? 방향도 계속 시계방향과 반시계방향을 번갈아 줘야한다고 생각하는데 그렇지 않아도 답이 나오는 이유가 너무 궁금합니다. for (int j=0; j<2; j++) 해서 flag도 변경해줘야하지 않나요?
안녕하세요 선생님 🙂 문제에서 이해가 되지 않는 부분이 있어서 질문 드립니다. 2중 for문에서 i = 0, j = 0, j < i 라는 조건이 있다면 i = 1로 해도 되지 않을까 싶어서 1로 했더니 cnt배열의 값들이 전부 틀어져버리더라구요. 아래의 코드를 for (int i = 0; i < N; i++) { mx = 0; for (int j = 0; j < i; j++) { 아래와 같이 변경해봤습니다. for (int i = 1; i < N; i++) { mx = 0; for (int j = 0; j < i; j++) { 결과값이 다른 이유가 무엇때문인지 잘 모르겠습니다. 조언 부탁드립니다 🙂
루키스님 항상 좋은 강의 감사합니다. 잘 듣고 있어요. 궁금증이 생겼는데 shader파일은 두 가지의 빌드 방법이 있다는것은 알겠는데 설정 중에 특별하게 해준거라곤 main을 VS로 바꿔준 거 외에는 없는 것 같은데 어떻게 두 빌드 방법이 가능하게 되는건지 이해를 못해서 질문 남겼습니다
안녕하세요 선생님 🙂 외판원 순회 문제 질문있습니다. dp를 비트플래그를 이용해서 방문여부를 체크한다는 아이디어가 정말 참신하게 다가오는 것 같습니다. 이 문제를 처음 접했을 때, 비트플래그가 아닌 dp[MAX_N][MAX_N * MAX_N] 형태를 생각했었는데요, 이 방식으로 푼다면 배열의 범위가 dp[16][65536]이 아닌 dp[16][256]이 됩니다. 이게 시간복잡도와 공간복잡도 면에서 더 효율적이라고 생각이 들지만, 방문처리를 어떻게 해야할지 모르겠더라구요. 혹시 이렇게도 풀 수 있는 방법이 있을까요?
안녕하세요 큰돌님? 오늘은 문제 입력의 범위가 이해가 안되서 질문 들고 오게 되었습니다. 8-K 문제 입력 범위는 long long으로 이해가 됐는데요, 그에 맞게 tree 도 long long 까지 해설에서 선언을 해주셨습니다 근데 입력받는 n의 개수가 1~100만개 이므로 tree 벡터 안에 구간합이 범위 초과가 나진 않는가요? worst로 (2^-63)-1 이 연속으로 들어오는걸 가정하고 있습니다. 이 문구 때문에 long long 그대로 진행해도 범위 초과가 안나는게 맞을까요? 답변 미리 감사합니다.
강의 중 궁금한 내용이 있어 질문 드립니다. class Base에 대한 Base VTable에 함수 fun1(), fun2() class Der에 대한 Der VTable에 fun1(), fun2() 이렇게 있다고 말씀해 주신 것 같은데요. 실제로 디버깅해 보니 위에 설명하신 것처럼 Base VTable은 보이지 않고 자식 Der VTable에 함수 모든 함수가 들어가 있는 것 처럼 보이더라구요. 실제로 virtual 함수가 아닌 일반 함수도 추가해 보았는데, 일반 함수까지 vftable 사이즈에 잡혀 있었습니다. 질문을 정리 하자면 상속 받은 클래스의 VTable 하나로 가상함수 관리 하고 있는게 맞나요? vftable에 일반 함수들도 있지만, 가상 함수만 목록에 보여 주는건가요? 그리고 _vfptr에 있는 함수 주소는 실제 그 함수의 주소가 아니라 _vfptr배열 인덱스(순서)의 주소 인건가요? (테스트해 보니 함수 주소와 _vfptr배열에 있는 주소가 달라서 여쭤 봅니다.) 테스트 코드 #include <iostream> using namespace std; class Parents { public: virtual void Func1() { cout << "void A::Func1" << endl; } virtual void Something() { cout << "void A::Something" << endl; } void Func2() { cout << "void A::Func2" << endl; } }; class Child : public Parents { public: void Func1() override { cout << "void B::Func1" << endl; } virtual void Func3() { cout << "void B::Func3" << endl; } }; int main() { Parents* parents = new Child(); Parents* parents2 = new Parents(); Child* child = new Child(); parents2->Func1(); parents->Func1(); parents->Func2(); child->Func3(); child->Something(); return 0; }