선생님께서 올려주신 공유 소스를 dev c++ 컴파일 하였을 때 오류가 납니다 ㅠㅠ 문제가 무엇일까요? 마지막 for(int i : v) cout << i << " "; 여기서 빨간 표시가 뜨더라구요..!! http://boj.kr/6b0acb8d4af043f88800c74b72d77610 10 9 C:\Users\PC\Desktop\AA\main.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11 29 14 C:\Users\PC\Desktop\AA\main.cpp [Error] range-based 'for' loops are not allowed in C++98 mode
일단 모든 케이스에 대해 다 정답처리가 됐지만, 틀렸다고 합니다. 그래서 제가 왜 그런지 잘 모르겠고 의문점을 가져서 질문을 하였습니다. 첫번 째 주석을 보시면 저는 저런식으로 생각했는데 저렇게 하는게 시간복잡도상 더 효율적이라고 판단하는데 어떻게 생각하는지 궁금합니다. 메모리도 128MB라 충분하다고 판단하여 저렇게 썼습니다. 어떤 점에서 이게 틀린지 지적해주시면 감사하겠습니다. http://boj.kr/4196de180bb04eac9c50cd3825761e1e
안녕하세요. 이분탐색 문제를 풀다가 질문이 생겨서 문의남깁니다. 6-F의 경우 최댓값을 1e18+4로 설정합니다. http://boj.kr/cb329d7bb6e049b590ebc6c647d69f5c 이에 반해, 6-G의 경우 최댓값을 1e9로 설정하는데요. (hi = 1e18로 하면 틀렸다고 뜹니다.) http://boj.kr/cddbd0a20bc54eb7ba549c25c6f3b187 그 이유를 알 수 있을까요?? 어떤 기준으로 최댓값을 설정해야 하는지 모호합니다.
모델, 애니메이션때 사용하셨던 모델이 mixamo의 모델인 걸로 알고 있는데 제공해 주신 모델외에 제가 새로 mixamo에서 다운받거나, 언리얼 리소스를 뜯어서 가져온 fbx 모델 모두 저런식으로 불필요한 bone들이 생깁니다. 제가 작년에 dx12강의를 들었어서 제공해주신 fbxloader를 좀 수정해서 fbx파일 한정으로 일부 해결하기는 했습니다. 혹시 파싱 문제를 해결할 방법이 있을까요?? 위에 사진은 수업때 제공해주신 소스코드에 모델만 바꿔서 파싱한 사진입니다.
안녕하세요 1-G 문제를 풀었는데 일단 게시판에 있는 반례를 다 적용하여도 틀렸다고 하는데 알고리즘 부분에서 복잡해서 그런거 같은데 어떤 문제점이 있는가요? http://boj.kr/7c33677aa106459385854be91d02ac26 아.... 제가 다시 보니 asterisk가 한 개이군요,,,, 저는 asterisk 갯수도 제한 없는 줄 알았네요.. ㅎㅎㅎ;
포인터 자체가 가지고 있는 주소와 포인터가 가리키는 변수의 주소랑 다른 개념이지 않나요? 예를 들어 double d=123.4; double *ptr=&d; 이면 &ptr은 포인터 자체가 가지는 주소이고 &(*ptr)은 포인터가 가리키는 변수의 주소인데 이 값이 다르지 않나요? 이 말이 맞다면 포인터 변수는 포인터 자체의 주소와 포인터가 가리키는 변수의 주소 둘 다 가지고 있는 건가요? 너무 헷갈려서 질문드립니다 ..
안녕하세요 먼저 제가 처음 작성한 코드입니다. http://boj.kr/fa4a2cffd39f4e388d7b79b7d140679 강사님의 코드와 99% 유사한데, 17코드, FOR문에서 i<=(1<<n)로 작성하였을 때, 틀렸다고 나왔습니다. 여기서, i<=(1<<n) --> i<(1<<n)로 변경하였을 때는 맞다고 나왔습니다. 그런데, 저는 (1<<n)열까지 포합시켰을 때 틀린 이유를 모르겠습니다. (1<<n) 열은 아무 값도 없어서 굳이 탐색할 필요 없지만, 전역변수로 선언하면 어차피 0으로 초기화 되므로, cnt는 항상 0이 되야 된다고 생각했는데 1<<n열의 값을 출력해보니까 -5,-6 같은 값이 들어가 있는 이유를 모르겠습니다.
MeshRenderer에 구현되어서 각 GameObject마다 한개씩 가지고 있던 TransformBuffer를 RenderManager로 옮기면서 모든 GameObject에 한개의 TransformBuffer를 사용한다고 하셨습니다. 질문은 "모든 GameObject에 TransformBuffer를 하나만 사용하면 TransformData가 중간에 곂쳐서 지워지거나 하진 않는가?" 입니다. 제가 생각해봤을때 모든 Renderable GameObject 하나하나마다 for문을 통해 지금 GameObject가 이미 렌더링 되고 다음 GameObject로 넘어가므로 이전 GameObject를 그리기 위해 사용한 ConstantBuffer의 내용을 갱신해도 괜찮다고 생각되는데 제 생각이 맞나요?
안녕하세요 선생님 문제를 풀던 중 궁금한 내용이 생겨서 질문 드립니다. #include<bits/stdc++.h> using namespace std; string str; string bstr; stack<char> st; int flag; int main() { cin >> str >> bstr; for (int i = 0; i < str.length(); i++) { st.push(str[i]); if (st.size() >= bstr.size() && st.top() == bstr[bstr.length() - 1]) { // 마지막이랑 똑같으면 string istr = ""; for (int a = 0; a < bstr.length(); a++) { istr += st.top(); st.pop(); } reverse(istr.begin(), istr.end()); if (istr != bstr) { for (int b = 0; b < istr.length(); i++) { st.push(istr[b]); } } } } str = ""; if (st.size() == 0) { cout << "FRULA" << "\n"; } else { while (st.size()) { str += st.top(); st.pop(); } reverse(str.begin(), str.end()); cout << str << "\n"; } return 0; } 제가 처음으로 작성한 코드입니다. for(char a : str) st.push(a) 같이 범위 기반 for문 대신 for (int i = 0; i < str.length(); i++) st.push(str[i]) 같이 원래의 for문 방식을 사용했다가 메모리 초과 오류를 겪었습니다. 두 방법이 어째서 메모리 차이가 많이 나는지 궁금합니다! 항상 감사합니다 좋은 하루 되세요 :)
큰돌님 안녕하세요. 3주차 문제들을 풀던 중 의문점이 생겨서 질문드립니다. 3주차 개념강의 때 합을 mod 11한 숫자 중 가장 큰 수를 구하는 예시문제가 있었습니다. 이 문제를 아래와 같은 방법으로 재귀를 통해 각 숫자별로 더할지 말지로 나눠서 숫자가 {1,2,3}인 경우는 총 경우의 수가 8이 된다고 말씀하셨습니다. go(idx + 1, sum + v[idx]); go(idx + 1, sum); 그런데 3주차 문제들을 풀던 도중 백트래킹을 쓰는 경우와 이렇게 재귀로 현재 위치를 하나씩 증가시켜가며 포함하는지 안하는지를 체크해가며 완전탐색을 돌리는 경우가 같은 경우가 아닌가 하는 의문점이 들었습니다(둘 다 모든 경우를 따지는 것이기 때문입니다). 그래서 개념강의 예시문제를 다시 백트래킹으로 풀어보았는데 {1,2,3}인 경우에서 8번의 경우를 따져야 하는데 경우의 수를 4번만 도출해는 것을 확인하였습니다. 아래는 백트래킹으로 구현한 mod 11 문제입니다. #include<bits/stdc++.h> using namespace std; const int mod = 11; int n, temp, cnt, ret; vector<int> v; void go(int idx, int sum){ if(idx == n){ ret = max(ret, sum % mod); cnt++; return; } for(int i = idx; i < n; i++){ sum += v[i]; go(i + 1, sum); sum -= v[i]; } // 설명해주신 방식 // go(idx + 1, sum + v[idx]); // go(idx + 1, sum); } int main(){ cin >> n; for(int i = 0; i < n; i++){ cin >> temp; v.push_back(temp); } go(0, 0); cout << ret << '\n'; cout << cnt << '\n'; } 코드를 하나하나 디버깅해가며 체크해보면서 왜 4번만 경우를 구하게 되는지는 알게 되었는데, 개념적으로 백트래킹이라는 개념이 모든 경우의 수를 구하는 것이고, 기존에 풀었던 방법인 idx를 증가시키면서 해당 위치의 숫자를 더할지 말지를 구하는 것도 모든 경우의 수를 구하는 것이라서 두 경우의 문제 접근할 때의 사고방식이 같다고 생각하는데 왜 백트래킹은 안되는 것인가요? 두 경우의 차이점이 너무 헷갈립니다 ㅠㅠ
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
4.2 스택프레임 강의 수강중입니다 x32와 x64는 다르다고 하셨는데 주소가 4byte, 8byte 차이인거 말고도 push 가 없고 mov만 쓰고 있는거 같기도 했는데 제꺼는 선생님꺼랑 다르게 RDX 레지스터로 mov하는것 같았습니다 mov 해서 b를 넣기 전에는 RDX 값이 RDX = 0000014CC24ABD40 였다가 b를 넣고 난 이후에는 RDX = 0000000000000005 로 바뀌었는데 주소가 들어가있다가 값으로 바뀌는게 너무 어색합니다 기존에 RDX에 들어 있었던 0000014CC24ABD40 는 쓰레기 값인가요??? x64에서 원리가 궁금합니다