묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
17:10 퀴즈에 관련된 질문입니다
퀴즈의 내용은 LeftFoot의 월드 행렬은 어떻게 구하는가 ? 입니다.해당 퀴즈를 보고, 왜 인지는 모르겠지만 갑자기 햇갈리는 부분이 생겨서 질문 드립니다.만약 계층 구조가 Root| +-- Parent| +-- Child 이런식으로 되어있다고 가정했을 때, child의 월드 행렬을 구하고 싶다면child_L X parent_W 이렇게 해도 되고, child_L X parent_L X root_L 이렇게 해도 되는건가요? 만약 저렇게해서 된다면 child_L X parent_W X root_W를 하면 child는 parent와 root의 하위 객체라는 뜻이니까 이렇게 해도 child의 월드 행렬이 나오나요 ?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 질문있습니다.
안녕하세요 큰돌님!! main 부분 마지막 출력 부분에서 mx에 -1을 하는 이유는 처음 mx에 0을 담아놓기 때문에 그 값을 빼기 위함인가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - G 12851 메모리초과
안녕하세요.저는 재귀로 했다가 시간초과 나서 BFS로 시도를 해보았는데 여러 예제를 넣으면 IDE상에서는 잘 됩니다. 그런데 백준에 넣으면 자꾸 메모리 초과라고 하면서 되지가 않네요. 변수도 별로 없고 그렇게 복잡한 코드도 아닌데 왜 안될까요.해설강의 봤는데 오히려 제 코드가 시간도 짧고 메모리는 훨씬 적게 먹을것 같은데...http://boj.kr/1fdf197d568c42be83e76b55ca24889b -- 해결했습니다.http://boj.kr/1455d3ec4d174bbd939b9ce22f57a763 visitied로 나중에 재방문하는 지점들을 처리하지 않게 만드니까 되네요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-k 질문입니다.
https://www.acmicpc.net/source/68946605강사님께서 적어주신 코드를 컴파일러에 실행해봤더니 아래와 같은 오류가 나옵니다.a.cpp:10:21: warning: array subscript is of type 'char' [-Wchar-subscripts] for(char a : s) cnt[a]++; ^~코드는 강사님과 동일합니다. 백준에선 통과했지만 컴파일러에서는 오류가 나오네요. https://www.acmicpc.net/source/68946669이건 제 컴파일러에서 오류가 안나오게 만든 코드인데요.char 타입이 음수 값을 가질 수 있어서, 그런가 싶어서 일단 'char'를 'unsigned char'로 변환하였습니다.근데 오류의 정확한 원인을 모르겠고,또 남들은 문제가 없어보이는데, 제 컴파일러에서만 오류가 나는 이유를 모르겠어서 여쭤봅니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 재귀함수 질문 있습니다
안녕하세요 선생님. 선생님께서 제공해주신 정답 코드를 보면 go 재귀 함수를 사용하는데 go의 재귀 부분을 이해하지 못하고 있습니다. void go(int here){ if(here == n + 1){ int sum = 0; for(int i = 1; i <= (1 << (n - 1)); i *= 2){ int cnt = 0; for(int j = 1; j <= n; j++) if(a[j] & i)cnt++; sum += min(cnt, n - cnt); } ret = min(ret, sum); return; } {(A) 위치} go(here + 1); a[here] = ~a[here]; go(here + 1);}위 함수에서 go(1)에서 시작하고 나면 go(2) => go(3) => go(4) 까지 가고 나서 재귀가 한번 끝나고 난 뒤 다음의 동작이 이해가 가지 않습니다. 동작을 확인해보려고 기저 사례 코드와 go(here+1) 코드 사이({A 위치}라고 하겠습니다!)에 a[i]의 요소를 확인해보는 코드를 삽입하여 확인하였습니다.(우선 저 위치에서 a[i]를 확인하는 지도 확실하지 않습니다.) 그런데 3x3 짜리 예시입력에 대해서 행의 뒤집기에 따른 행렬 a[i]의 경우의 수가 8개가 나와야 한다고 생각되는데 A위치에서는 8가지 나오지도 않았습니다. 혹시 마지막 3줄에 따른 재귀함수가 어떻게 돌아가는 지 알 수 있을까요? 4-B 문제와는 별개로 3주차 완전탐색 부터 재귀함수에 따른 문제 풀이 방식이 대부분인데 제가 재귀 함수에 대한 이해가 조금 부족한 것 같아서 어려움을 겪고 있습니다. 재귀 함수 부분을 만들 때(예를 들어 void go(int y, int x){~~} 라면) 언제 다시 (예를 들어 go(ny,nx)) 처럼 적어주어 재귀를 들어가야 하는 지에 대한 어려움이 있습니다. 혹시 이럴 때는 어떠한 방식으로 공부하면 좋을까요?
-
미해결언리얼 엔진4 입문 (C++ 기반)
c++ 클래스 폴더 관련 질문입니다.
안녕하세요, 한동안 유니티를 이용하여 작업을 하다가 막 언리얼에 입문한 학생입니다.언리얼에서 작업을 하면서 c++ 클래스 파일을 폴더 하나에만 놓다보니 파일이 어수선한 느낌이 들어 따로 public과 private 폴더 안에 다른 폴더들을 생성하여 파일 정리를 하자는 생각이 들었습니다.그런데 이렇게 폴더들을 따로 만들어서 정리를 하다가 만약에 정리를 다른 방식으로 하고 싶어서 폴더와 파일 위치를 바꾸다보면 레퍼런스 에러 문제가 발생할 수 있는데 이러한 경우 이것을 잡아주기 위해 수많은 c++ 클래스 파일을 직접 하나하나 바꿔야 되는 불편한 점이 있었습니다.루키스님께서는 언리얼로 프로젝트를 만들때 c++ 클래스 파일을 어떻게 관리하시는 편인가요?만약 다른 폴더를 만들어 관리를 하신다면 해당 문제는 어떻게 해결하고 계시는지 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
매개변수로 넘어온 배열의 총 길이를 알 수 있는 방법이 없나요?
당연한 말이겠지만, 아래 방식으로 하니까 설명해주신 대로 포인터가 넘어오기 때문에 sizeof(arr)가 8byte로 잡혀서 값이 2로 뜹니다. (64bit 환경입니다)포인터의 size를 계산하려고 시도했기 때문에 이와 같은 오류가 뜨고요.https://learn.microsoft.com/ko-kr/cpp/code-quality/c6384?view=msvc-170C#에서처럼 arr.Length를 통해 배열의 길이를 받아올 수 있는 것이 아니기 때문에, Generic 을 대비한 함수를 만들어서 사용하고 싶은데 별도 함수를 통해 받아올 수 있는 방법이 없나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-H 문제 질문
안녕하세요 선생님 좋은 강의 매번 감사합니다. 강의를 보며 풀이를 보다 의문점이 생겨 질문드립니다. 답안코드의for(int i = 3; i <= max_n; i++){ f[i] = f[i - 1] + f[i - 2] + 1; } 이 부분에서 i의 조건이 i <= max_n 인 이유를 잘 모르겠습니다.앞에서 f 를 선언할때 int f[max_n] 으로 선언하였는데 위의 조건이 되면 for문 안에서 f[max_n] 까지 값을 할당해주는것인데 이러면 index범위를 벗어나서 할당하는것 아닌가요? 만약 max_n이 40이라면 마지막 인덱스는 f[40]이 아닌 f[39]으로 알고있어서 혹시 그게 맞지 않나싶어 질문드립니다! 왜 오류가 안나는지 궁금합니다. 아니면 제가 놓치고 있는 부분이 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
int와 long long의 차이
큰돌님 안녕하세요. 강의 정말 잘듣고 있습니다!!옛날부터 궁금한 점이 있었는데, 항상 헷갈리는 부분이 있어서 이렇게 질문 남기게 되었습니다. 보통 숫자 데이터를 다룰 때, C++에서 int형과 long long형 타입 두 개를 보통 사용하는 것으로 알고 있습니다.데이터 범위에 따라서 두 개를 각각 나눠쓰면 되는 부분인데... 제가 궁금한 점은... 두 개가 그렇게 큰 차이가 없다면 숫자는 모든 걸 int형 말고, long long으로 다 선언하면 되지 않나? 라는 궁금증입니다!! 제가 혼자 공부를 해보니.. 32bit컴퓨터라면 int로 선언할때와 long long으로 선언할때 실행속도에서 차이가 생겼는데, 64bit로 넘어오면서 이 실행속도 차이도 없어졌다고 합니다. 시간복잡도(실행속도) 측면에서도 별로 그렇게 차이도 없고, long long으로 모든 숫자 타입을 지정하면 int형에서 발생하는 오버플로우 문제 등 장점들이 더 많다고 생각이 됩니다. 가장 큰 차이라고 생각이 드는 부분이 공간복잡도면인데, 코딩 테스트에서 공간복잡도는 크게 다루지 않으니.. 굳이 long long말고 int형을 쓰는 이유를 모르겠습니다. 정리: 숫자 데이터 타입을 구분할 때, 모든 걸 long long 타입으로 하면 안되나요?? long long타입으로 할 때, 안 좋은 면이 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-o
d[i] = d[stk.top()]= 1; 여기서 stk.top() 은 ')'을 리턴하는데, 어떻게 i-1 같은 역할을 할 수 있는 건가요..?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이 문제 BFS 플루이드 워셜로 풀이하면 더 효율적일까요?
큰돌님 안녕하십니까?지난밤에 3-J 14497 주난의 난3-K 3197 백조의 호수해당 문제 DFS로 풀면 어떠나는 질문 남겨서 제 코드가 비효율적이라는 조언 감사히 받았습니다.https://www.inflearn.com/questions/1064823/%EC%9D%B4-%EB%AC%B8%EC%A0%9C-dfs-%ED%92%80%EC%9D%B4%EB%8A%94-%EC%96%B4%EB%96%A4%EA%B0%80%EC%9A%94 결론이 시간 복잡도를 고려하면 플루이드 워셜로 풀어야 효과적이라는 말씀같은데,해당 문제인 2-Q 치즈 문제도 BFS 플루이드 워셜로 풀면 좀더 효율적인 풀이가 될까요?2-Q는 DFS로 풀이해주셨는데, 플루이드 워셜 쓰면 더 효과적일지 아이디어 레밸에서 궁금해서 질문 올립니다.답변 미리 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 1325 질문입니다.
안녕하세요. 제 나름대로 풀어봤는데 자꾸 시간초과가 걸려서 해설 코드 보고 제 코드를 조금 수정했거든요. 원래 제 코드에서 dfs알고리즘은 동일하고 해킹된 컴퓨터 수 계산해서 출력하는 것만 바꿨는데 맞네요. 그런데 제가 보기엔 별 차이 없을 것 같은데 어디서 차이가 발생하는지 궁금합니다. 원래 코드http://boj.kr/5ff0dc6ee81c41e5acf41f41a2b3e857 수정한 코드http://boj.kr/be9244a19d774c2ab6ce08343e52c94c
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-H 문제 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 큰돌 강사님 문제를 보면 "사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다."라는 조건이 있는데, 선생님이 제공해주신 풀이에서어떻게 순서가 같은지 체크가 되는건지 이해가 되지 않아서요.혹시 설명해주실 수 있나요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이 문제 DFS 풀이는 어떤가요?
큰돌님 안녕하십니까?해당 문제 2636 치즈 문제가 떠올라서 DFS로 풀이를 해서 통과했는데요, 해설에는 BFS 하셔서 질문 올립니다.해당 문제 DFS풀이는 어떻다고 생각하시나요?왜냐하면 이 다음 문제인 3-K 3197 백조의 호수는 이래 풀면 시간 초과 뜨더라구요! 제가 짠 코드는 2636 치즈 참고해서 아래와 같습니다.http://boj.kr/cc3ec76201724d44a5c35f955a9e41cc#include <bits/stdc++.h>using namespace std;////////////bfs dfs 용//////////char a[302][302];int visited[302][302];int m,n;int aa,bb;int c,d;string oneline;const int dy[] = {-1, 0, 1, 0};const int dx[] = {0, 1, 0, -1};vector<pair<int,int>> temp;int ret;bool dfs(int y, int x){bool tempbool=false;visited[y][x]=1;for(int i = 0; i< 4;i++){int ny = y + dy[i];int nx = x + dx[i];if( ny<0|| ny>=m || nx < 0 ||nx>=n) continue;if(visited[ny][nx]==1) continue; if(a[ny][nx]=='#'){return true;}if(a[ny][nx]== '1'){temp.push_back({ny,nx});continue;}else{tempbool = dfs(ny,nx);if(tempbool) return tempbool;}}return tempbool;}int main(){ios_base::sync_with_stdio(false);cin.tie(NULL); cin>>m>>n;cin>>aa>>bb>>c>>d;for(int i = 0 ; i< m ; i++){cin>>oneline;for(int j=0; j<n;j++){a[i][j]= oneline[j];}} while(true){ret++;fill(&visited[0][0], &visited[0][0]+302*302,0);bool tempbool= dfs(aa-1,bb-1);if(tempbool) break; while(temp.size()){pair<int,int> aaa = temp[temp.size()-1];temp.pop_back();a[aaa.first][aaa.second] = '0' ;}} cout<<ret;return 0;}답변 미리 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[7-C] - 제작한 함수에서 값을 출력할 때 프로그래머스에서 어떻게 구현해야 하나요??
안녕하세요.요즘 프로그래머스에서 대부분 코딩 테스트를 제출하더라고요. 이 문제는 프로그래머스에서 어떻게 풀어야 하는지 모르겠어서 질문드립니다. 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 가 뜹니다. 어떻게 풀이해야 하나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A TSP문제 재귀부분질문이있습니다
재귀부분에서 질문이 있습니다제가 이해하기론결국 for문에서 N번을 원래 브루트포스를 통해서 탐색하는 기본로직적인 측면은 같으나 반복문에 진입하기전에메모이제이션기법인 dp[MaxN][1<<MaxN]배열을 이용해for문을 돌지 않음으로써 최악의 시간복잡도인 N^N을 회피하면서 최적해를 찾는방식이되는걸까요? 제가이해한게맞을런지요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 반례 궁금합니다.
#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번 트리 문제를 풀었는데, 어디가 오답인지 감이 안옵니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
VertexBuffer와 InstanceBuffer 구별법
저희가 만든 VertexBuffer는 StartSlot을 0번에 바인딩 하고 InstanceBuffer는 StartSlot을 1번 바인딩 한 다음에 따로 파이프라인에게 두 버퍼중에 어떤게 VertexBuffer이고 어떤게 InstanceBuffer인지 알려주지 않아도 되는 이유는 Shader쪽에서 InputLayouut읆 만들때 InstanceBuffer일 경우 강제로 1번 슬롯에 바인딩 될 것 이라고 만들어 줘서 그런건가요? Shader쪽 코드를 좁 분석해 보니까 InputLayout을 생성할때 지정자 이름에 "INST"가 들어가면 InputSlot을 강제로 1로 변환해주는 부분이 있어서요제가 생각한게 정답이 맞는지 궁금합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 시작 기준 질문드립니다
안녕하세요 큰돌님큰돌님 로드맵영상 보고 참고해서 공부중입니다 ㅎㅎ제가 지금 c++개념강의만 한번 듣고 이제 큰돌님 코테강의 들으려고하는데프로그래머스 lv0같은 거 풀고나서 강의를 듣는게 나을까요?코테강의 공부를 시작하는게 나을까요??
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
문제 의문
선생님 BFS함수 코드 중에서 영희가 기사를 지나쳐가는 경우는 고려안했는데도 정답인 이유가 있나요?-> ['영희는 산딸기가 없이는 기사를 지나쳐 갈 수 없다.'] 2 - 0 - 3 - 4 이런 식의 행이 있으면 문제되지 않을까 싶어서요