안녕하세요. 요즘 프로그래머스에서 대부분 코딩 테스트를 제출하더라고요. 이 문제는 프로그래머스에서 어떻게 풀어야 하는지 모르겠어서 질문드립니다. int dfs(int y, int x) { if (y < 0 || x < 0 || y >= n || x >= m || a[y][x] == -1) return 0; if (visited[y][x]) { cout << -1 << "\n"; exit(0); } int &ret = dp[y][x]; if (ret) return ret; visited[y][x] = 1; for (int i = 0; i < 4; i++) { int ny = y + dy[i] * a[y][x]; int nx = x + dx[i] * a[y][x]; ret = max(ret, dfs(ny, nx) + 1); } visited[y][x] = 0; return ret; } 이 풀이에서, visited[y][x]를 확인 한 후 답을 출력하는데, 프로그래머스에서 exit(0)을 실행하면 program terminated unexpectedly 가 뜹니다. 어떻게 풀이해야 하나요??
#include <bits/stdc++.h> using namespace std; int N; map<int, vector<int>> mp; int tmp, d, ret; void removeAll(int key){ // if not leaf node -> recursive remove if(!mp[key].empty()) { for(int c: mp[key]) removeAll(c); } // erase itself mp.erase(key); } int main(){ cin >> N; // make graph for(int i = 0; i < N; i++){ mp[i]; cin >> tmp; if (tmp != -1) mp[tmp].push_back(i); } // input node to be deleted cin >> d; removeAll(d); if (mp.size() == 1) ret = 1; else if (mp.size() == 0) ret = 0; else { // for all key in map for(auto it: mp) { int key = it.first; // if the remaining value empty => plus if (mp[key].empty()) ret++; } } cout << ret; } 다음과 같이 map과 재귀를 풀어서 1068번 트리 문제를 풀었는데, 어디가 오답인지 감이 안옵니다.
저희가 만든 VertexBuffer는 StartSlot을 0번에 바인딩 하고 InstanceBuffer는 StartSlot을 1번 바인딩 한 다음에 따로 파이프라인에게 두 버퍼중에 어떤게 VertexBuffer이고 어떤게 InstanceBuffer인지 알려주지 않아도 되는 이유는 Shader쪽에서 InputLayouut읆 만들때 InstanceBuffer일 경우 강제로 1번 슬롯에 바인딩 될 것 이라고 만들어 줘서 그런건가요? Shader쪽 코드를 좁 분석해 보니까 InputLayout을 생성할때 지정자 이름에 "INST"가 들어가면 InputSlot을 강제로 1로 변환해주는 부분이 있어서요 제가 생각한게 정답이 맞는지 궁금합니다
CRT 라이브러리를 활용하여 위 사진처럼 메모리 누수가 뜨고 있는 걸 확인했습니다. 찾아보니 ReadModel 함수에서 발생하였고 bone->parentIndex = file->Read<int32>(); 에서 누수가 나는걸 확인했습니다. 저 부분을 주석 처리하면 누수가 나지 않음을 확인했고, kachujin 외에 dragon, tower 등 다른 fbx 파일들도 예외 없이 저 부분에서 누수가 났는데 계속 찾아보고 고민해봤는데도 왜 crtdbg 에 메모리 누수로 잡히는지 이해가 안됩니다. Read 함수 구현 부분 입니다. 너무 궁금해서 처음으로 질문 남겨봅니다.. !
안녕허세요 강사님 강사님 풀이 과정을 3번 이상 듣고 코드를 여러번 봤는데도 잘 이해가 안가는 부분이 있어서 질문드립니다! 강사님 코드기준(해설집) 11번째줄과 12번째줄에 for(int i = y; i < y + size; i++){ for(int j = x; j < x + size; j++){ 이렇게 i 와 j 의 범위를 나누셨는데 왜 y가 0 일때 모든 x 값 비교하고 재귀하고 이런식으로 만든 이유가 궁금해서 질문합니다. 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 이렇게 한 묶음으로 검사를 하고 그 값을 return 하고 해야 맞지 않나요 ? 제가 풀었던 범위 나누기와 달라서 너무 헷갈려서 질문합니다. #include <iostream> using namespace std; // 좌상 우상 좌하 우하 const int dy[4] = { -1, -1, 0, 0 }; const int dx[4] = { -1, 0, -1, 0 }; int N; char adj[65][65]; string ret; string QuardTree(int y, int x, int n) { string str; if (n == 1) return str += adj[y][x]; n = n >> 1; // n -> 2 for (int i = 0; i < 4; i++) { int ny = y + dy[i] * n; // 2 --> 1 int nx = x + dx[i] * n; str += QuardTree(ny, nx, n); } if (str == "0000") str = "0"; else if (str == "1111") str = "1"; else str = "(" + str + ")"; return str; } int main() { cin >> N; for (int y = 1; y <= N; y++) { string temp; cin >> temp; for (int x = 1; x <= temp.size(); x++) adj[y][x] = temp[x - 1]; } ret += QuardTree(N, N, N); cout << ret; return 0; } 혹시 질문이 이해가 안가실까봐 제 코드 풀이도 올려요
선생님께서는 입력 받은 값 x1,x2 y1,y2로 범위를 정하고 그에 해당하는곳에 1의 값을 넣어 주었는데 그 값이 배열에서의 값과는 다른데 --> 입력이 5 7 3 0 2 4 4 1 1 2 5 4 0 6 2 다음과 같이 주어 졌을때 (0,2) ~ (4,4) 부분에 해당하는 배열의 값들을 보면 a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] 인데 왜 범위를 for(int x = x1; x < x2; x++){ for(int y = y1; y < y2; y++){ a[y][x] = 1; 다음과 같이 나누어 그 값을 바로 넣었는지 궁금합니다. 제 생각은 y좌표의 위치를 뒤집어서 생각하는 것이기에 모든 값들도 똑같이 뒤집어서 넣는거는 상관없어서 넣은것 같은데 맞을까요??
안녕하세요 큰돌님 2-Q 2636문제 모범답안 코드 질문있습니다. void dfs함수에서 return이 두개가 있는데 각각 return을 하면 다시 main함수의 dfs(0,0)직후로 넘어가지는건가요 아니면 void dfs함수 내에 있는 if문의 return과 for문 바깥에 있는 return이 다른의미를 갖는건가요? void dfs함수 내의 return부분이 어디로 가는지 헷갈립니다.
아무리 해도 시간 초과 나고 심지어 강의 코드 그냥 똑같이 써도 시간초과가 나네요. 심지어 ret2 안구하고 그냥 ret5만 구해서 계산해도 시간초과입니다. ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL); 이거 안썼다고 시간초과 난다고 틀렸다고 하는건 비정상이라고 생각합니다. 실제 프로그래밍할 때 써야하는 것도 아니고 무슨 저거 썼는지 안썼는지 확인을 하는지 어이가 없네요. ㅋㅋ 이게 무슨 알고리즘 테스트인지.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 제목과 같습니다. 아래 링크에 해당하는 코드의 반례를 알고싶어서 질문남깁니다. 항상 감사합니다. https://www.acmicpc.net/source/share/2c4c4086a4314e4688e24d7cbe8d1b4b
http://boj.kr/1cea1d70b28a4da8b871d48acb7c4907 홀수가 2개 이상이면 팬린드롬이 불가하고 아니면 팰린드롬을 만드는데 알파벳 개수가 1개이면 홀수 문자에 넣고 아니면 개수의 반 만큼 word에 넣는다 이때, 홀수개이면 홀수 문자에 넣고 끝에 추가한다 그리고 뒤집은 word를 추가한다 이런 식으로 짰는데 실행하면 맞는데 왜 틀렸다고 뜨는지 궁금합니다!
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
저희 프로젝트에서 클라이언트의 네트워크 모델은 WSAEventSelect 모델, 서버의 네트워크 모델은 IOCP 모델이 맞을까요?? 서버의 모델은 IOCP 라는 걸 확실히 알겠는데 클라이언트의 네트워크 모델도 IOCP 인건지 WSAEventSelect 인지 이해가 잘 안갑니다..!! 클라, 서버 둘다 메인스레드 하나로 처리한다고 하셔서 헷갈려서 여쭤봅니다 ㅠㅠ
LoadShaderFromFile(L"Shaders.hlsl", "VS", "vs_5_0", _vsBlob); 에서 "VS" 부분에서 E0434 "std::string &" 형식(const 한정 형식 아님)의 참조를 "const char [3]" 형식의 값으로 초기화할 수 없습니다. 오류가 뜹니다 해결방법을 모르겠습니다