묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
임의 변수의 클래스 타입 확인
언리얼에서 임의 변수가 원하는 클래스 타입인지 혹은 원하는 클래스를 상속받았는지확인하는 방법이 dynamic_cast 를 통한 방법 말고, 좀 더 최적화된 방법이 있나요? 리플렉션 시스템 관련해서 무언가 있을 것 같은데 찾기가 어렵습니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-Y 성냥개비 문제 최소값을 Top-Down으로 풀었을 때 질문이 있습니다
안녕하세요, 큰돌님 강의 열심히 듣고 있는 수강생입니다. 제 풀이입니다. 사실상 강의 코드와 거의 일치합니다.(다른 점은 올 수 있는 숫자 중 필요 성냥개비 수가 같은 수 중 큰 수를 제거하고 0,1,2,4,6,7,8 에 대해서만 따로 배열을 만들어 돌렸다는 정도입니다)https://www.acmicpc.net/source/79322370 강의 내용을 바탕으로 바텀업 방식과 탑다운 방식으로 모두 풀어보았는데요. 문제 해설에 남겨주신 풀이도 바텀업인 것을 보니 이 문제의 정통 풀이법은 아마 바텀업인 것 같습니다. 탑다운 방식의 풀이가 틀린 것은 아닌데..테스트 케이스가 여러 개 주어지는 문제이다보니 성냥개비 개수를 작은 순으로 (4개, 7개, 10개..) 주면 맞는데, 처음 주어지는 성냥개비 개수가 큰 경우(예를 들어 100개부터 주어지는 경우) 에는 100개에 대한 top-down을 돌면서 거쳐온 중간 값들을 dp에 저장하는데 이때 '첫째 자리에는 0이 올 수 없다' 라는 조건을 만족하지 못하는 수가 다수 저장됩니다. 입력으로 주어진 수 x에 대해서는if (left == x && num == 0) continue;해당 구문으로 첫째 자리에 0이 오는 것을 방어하는데, 이후 입력으로 받은 수가 dp 테이블에 기록되어있다면 바로 return해버려서 되다 만 중간값을 그냥 반환해버리는 문제가 있는 것 같습니다. 그렇다고 모든 입력에 대해 dp테이블을 전부 비웠다가 다시 탑다운으로 일일이 계산하는 것은 너무나 비효율적같아 보이는데.. 이렇기 때문에 이 문제 풀이는 바텀업이 정배(?)인건가요? 아니면 탑다운 방식에서 제가 뭘 놓치고 있는 것이 있을까요?
-
미해결C++로 만드는 언리얼엔진 게임포트폴리오 시리즈 Stage3
AO_Aim 애니메이션 설정 오류
Rifle_Additive_D를 넣은 다음에 Rifle_Additive_F를 넣으면 Animation should be additive라는 오류가 뜨면서 애니메이션이 안 들어가는데 다른 설정이 필요한걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - H 13913 숨바꼭질 4
http://boj.kr/625f57b1c3804f65b7514d601660aac5안녕하세요 선생님 제 코드가 메모리 초과가 나는데 어디가 문제인지 모르겠습니다. Vector v의 크기도 대략 5,000,000보다 작아보이는데 어디가 문제일까요?
-
미해결C++로 만드는 언리얼엔진 게임포트폴리오 시리즈 Stage3
BS_Aim 파일 오류
파일 주신 BS_Aim 파일이 애니메이션 자체 오류가 있는데 파일을 다시 받아야 하는걸까요? 설정된 애니메이션 없음으로 나옵니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 질문있습니다
안녕하세요 선생님 🙂 이해가 가지 않는 부분이 있어서 질문드립니다. 강의에서도 설명 부분이 없는 것 같아서 질문드립니다. for (int i = 0; i < N; i++) { cin >> str; for (int j = 0; j < str.size(); j++) { if (str[j] < 97) result += str[j]; else if (result.size()) func(); } if (result.size()) func(); } 위의 코드 중 if (result.size()) func(); 이 부분이 왜 다시 들어가야하는지 이해가 가지 않습니다. 설명 부탁드립니다..!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
조합을 이용한 풀이
안녕하세요 선생님 조합을 이용해서 문제 풀이를 시도했는데, 순열 [1,3,9]를 이용 http://boj.kr/2411bc89bcd94ac3baab79fed027f981 순열[-9,-3,-1]을 이용http://boj.kr/8a0f5a03890c4b1cb210f3ef378f238e 각각 시도를 했는데 1번의 경우는 실패하고 2번의 경우는 성공을 하는데 이유를 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-C 질문
안녕하세요 선생님주차 시간의 범위가 1~100인데배열의 크기를 104로 잡는 이유가 궁금합니다.강의 잘 듣고 있습니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bits/stdc++.h 파일을 추가하고 실행을 하려고 하는데 cin, cout 등 기본 함수에 에러가 발생합니다,
stdc++.h를 추가하기 위해서 gcc --version를 통해 경로를 확인하고 해당 경로로 가서 include폴더 안에 bits폴더를 생성해서 stdc++.h파일을 추가하고a.cpp파일을 만들어서 실행을 했는데 가장 기본 함수인 cin, cout그리고 string자체가 에러가 납니다,,,환경은 맥 m2 프로이고 vscode로 실행했습니다추가) #include <iostream>으로 변경했더니 됩니다ㅠㅠ 뭐가 문제일까요?추가22) 해결했습니다!! iostream은 되길래 iostream파일 경로로 가서 확인했더니 /Applications/Xcode.app/contents/Developer/~이 경로가 아니고 다른 경로였고 해당 경로에 있던 bits폴더의 stdc++.h에 넣어놨던 내용들이 다 초기화되서 아무것도 없더라구요,,, 그래서 다시 넣어줬더니 잘 실행이됩니다!!찾아보니까 xcode를 업데이트 하면서 내용들이 날아간것 같더라구욥! 혹시 다른 분들께 도움이 될 수도 있어 해결방법까지 남겨놓겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-d 불 메모리 초과 때문에 질문드립니다!
안녕하세요 큰돌님, 언제나 좋은 강의 감사드립니다.http://boj.kr/3ec7adf276a74ad89e779cb5b1839dbd3-d 불 문제를 풀고있는데 계속해서 메모리 초과가 발생해서요.혹시 몰라 큰돌님 예제 소스 확인했는데 로직상 거의 유사한것같은데 계속해서 메모리 초과가 발생하고 있습니다.검토 한 번 부탁드려도 될까요?다시 한번 좋은 강의 감사드립니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모리 초과와 시간초과
http://boj.kr/12b19d28de834ea8904e1304c639f49e안녕하세요 선생님. 해당 코드는 메모리 초과가 나오는데 어느 부분때문에 메모리 초과가 나오는지 이해가 되지 않아서 여쭤봅니다. 또한 제가 처음 이 문제를 보고 어떻게 풀지 감은 잡았는데 그때 제 생각은 bfs가 한 level씩 진행되면 6의 제곱으로 경우의 수가 늘어날텐데 그런 경우에는 60 60 60이 인풋으로 들어왔을때 시간초과가 날 수도 있다고 생각했습니다. 처음 이 문제를 읽고 bfs로 풀 생각을 했을때 시간초과가 나지 않는다는 확신은 무엇인가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 분할정복 질문
http://boj.kr/9836321748734ee289405c3434a83f5c아래 질문 하신분들 코드를 보다가 정리를 해보니이방법이 외우기 쉬운것 같은데요.일반적인 DFS, BFS 에서는 오버플로우 체크(방문여부 등등..)를 하는 코드가 있는데요. 위 코드로 할 경우에는 오버플로우 또는 반례를 생각하지 않아도 되는걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-L 이 문제에서 dp 배열의 정의는 무엇인가요?
큰돌님 안녕하세요?7-L 안녕 문제 질문 드립니다. 해당 dp 배열 정의를 모르겠어서 질문 드리게 되었는데요,마지막 dp[100]으로 print를 해주셨는데,dp[100]은 체력이 100일 때처럼 보이는데 당연히 이건 아닌거 같아서요.dp의 각 배열이 가르키는게 무엇인지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [필수개념] 순열 : 재귀함수로 만드는 순열 라는 강의에 makePermutation 이라는 함수를 구현해주셨는데 해당 내용에 대해서 궁금한 점이 있어 문의드립니다. void makePermutation(int n, int r, int depth) { // cout << n << " : " << r << " : " << depth << '\n'; if (r == depth) { printV(v); return; } for (int i = depth; i < n; i++) { swap(v[i], v[depth]); makePermutation(n, r, depth + 1); swap(v[i], v[depth]); } return; }코드에서 현재 r은 역할이 없는 것 같은데 어떤 부분에서 필요한걸까요?제가 수업에서 놓친 부분이 있을까요?감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-C memset과 fill 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 강의 잘 듣고 있습니다 ㅎㅎ다름이 아니라, 게리멘더링 문제에서 comp와 visited를 memset으로 초기화하고 제출했더니 버퍼오버플로우로 런타임에러가 나더라구요,, 0으로 초기화하는 경우에는 memset 쓸 수 있는 걸로 알고 있고, 심지어 0으로 초기화할 때는 memset이 fill보다 빠르지 않나요?ㅠㅠ 그런데 버퍼오버플로우 나는 이유가 궁금합니다!답변 미리 감사드려요!!! 항상 이른 아침에 답변해주시던데 좋은 하루 보내세요~~
-
미해결C++로 만드는 언리얼엔진 게임포트폴리오 시리즈 Stage3
41 총기장착 2 문의
노티파이 적용 후 플레이하고 1번 누르면 노티파이 적용된 잠깐의 구간 동안 플레이어가 사라졌다가 다시 나오는데 어떻게 된걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문있습니다!
안녕하세요 선생님 :) 문제풀이 중 이해가 안가는 부분이 하나있어서 질문드립니다.선생님의 문제풀이 중 아래와 같은 부분이 있는데요,if(i >= 1 && (prev == idx) && (idx != 'e' && idx != 'o')){ flag = 1; i >= 1이라는 조건을 넣어주신 이유를 잘 모르겠습니다. 실제로 저 부분을 지워도 정답으로 인정이 되더라구요. 알려주시면 감사하겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D 질문 있습니다
http://boj.kr/e94fb8e43b714794a0950505c0091594 아래의 dfs 함수에서 a[ny][nx] == 1일때 왜 continue 하는 것 인가요?int dfs(int y, int x){ visited[y][x] = 1; int ret = 1; for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || nx < 0 || ny >= m || nx >= n || visited[ny][nx] == 1) { continue; } if (a[ny][nx] == 1) { continue; } ret += dfs(ny, nx); } return ret; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
그리디로 풀린다는 판단히 명확하게 서지 않습니다.
31883번: FA수의 진 (acmicpc.net)백준의 31883 문제를 DP로 풀면 깔끔하게 풀릴 수 있다고 생각해서 DP로 풀었습니다. 하지만 풀고나서 문제 카테고리가 그리디로 있는 걸 확인하고 그리디로 풀으니 더 코드가 깔끔하게 풀리는 경험을 했습니다. 그리디로 풀린다는 판단은 이 문제에서 어떻게 생각해야 되는 걸까요? 그리고 그리디 문제다 하는 판단 근거 유추를 어떻게 해야 하는지 강의에 있는 내용 외로 보충 설명 해주시면 감사하겠습니다. 아래는 DP로 풀은 코드 입니다.import sys input = sys.stdin.readline N = int(input()) times = [list(map(int, input().split())) for _ in range(N)] memo = [[0] * 2 for _ in range(N)] memo[0][0] = times[0][0] memo[0][1] = times[0][1] for i in range(1, N): t1 = memo[i-1][0] tmp = t1 % (times[i][2] + times[i][3]) if tmp >= times[i][2]: t1 += times[i][2] + times[i][3] - tmp t1 += times[i][0] t2 = memo[i-1][1] tmp = t2 % (times[i][2] + times[i][3]) if tmp >= times[i][2]: t2 += times[i][2] + times[i][3] - tmp t2 += times[i][0] cross1 = min(t1, t2) t3 = times[i][1] + memo[i-1][0] t4 = times[i][1] + memo[i-1][1] cross2 = min(t3, t4) memo[i][0] = cross1 memo[i][1] = cross2 print(min(memo[N-1]))
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스택프레임 질문
복습하려고 제 코드를 디스어셈블리어로 분석하는 도중 위 강의에선 main함수의 a,b의 값을 전달하기위해 컴파일러가 eax,ebx 레지스터에 그 값을 복사하고 그것들을 push를 통해 스택의 공간을 더 사용하지않습니까? push를 통한 것이니 esp(스택 포인터, 저는 x64라 rsp긴 합니다.)의 값도 감소(공간이 늘어난것) 하게 되는걸로 알고있습니다. 하지만 제 코드에선 컴파일러가 push를 통해 매개변수를 할당한것이아닌 esp+1h 라는 주소에 mov를 통해 직접 값을 넣었습니다. 제 생각에는 main에서 esp를 sub를 통해 확보한 스택프레임의 크기에 공간이 남아서 그 빈공간에 매개변수를 할당한것같은데 이건 그저 컴파일러가 판단해서 한게 맞는건지 궁금합니다. int PrintNumber(int a,int b){ 00007FF6506918D0 mov dword ptr [rsp+10h],edx 00007FF6506918D4 mov dword ptr [rsp+8],ecx 00007FF6506918D8 push rbp 00007FF6506918D9 push rdi 00007FF6506918DA sub rsp,108h 00007FF6506918E1 lea rbp,[rsp+20h] 00007FF6506918E6 lea rcx,[__0D5E813E_CPP_STUDY_8@cpp (07FF6506A3066h)] 00007FF6506918ED call __CheckForDebuggerJustMyCode (07FF6506913FCh) 00007FF6506918F2 nop int c = a + b;00007FF6506918F3 mov eax,dword ptr [b] 00007FF6506918F9 mov ecx,dword ptr [a] 00007FF6506918FF add ecx,eax 00007FF650691901 mov eax,ecx 00007FF650691903 mov dword ptr [c],eax return c;00007FF650691906 mov eax,dword ptr [c] }00007FF650691909 lea rsp,[rbp+0E8h] 00007FF650691910 pop rdi 00007FF650691911 pop rbp 00007FF650691912 ret 여기서 rsp+1h, rsp+8에 각각 eax,ebx에 들어있는 매개변수값을 mov를 통해 넣어주고 push를 통해 이전 스택프레임의(main함수) rbp rdi 값을 밀어넣어주고 rsp,108h 라는 공간을 printNumber의 함수의 스택프레임으로써 sub을 사용에 할당하고 여자저차 연산하고 이후 다시 lea rsp,[rbp+0E8h]를통해 rsp를 main함수의 레지스터가 저장된 스택 (위에서 rbp rdi값) 위치로 돌아가 pop을 해줌으로써 다시 rdi rbp의 값을 넣어주고 ret한다고 이해를 했습니다. 근데 이 rsp+1h , rsp+8은 사실 새로운 스택프레임 즉 printNumber의 스택프레임이 아닌 범위인데 ( main에서 잡아논 스택 공간) 이런건 컴파일러의 재량인지 궁금하고 또 위험한 기능은 아닌지 궁금합니다!.