[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 요즘 실제 게임 제작에 컴퓨트 쉐이더가 많이 활용되나요? 그리고 서버 쪽에서도 활용되는 경우가 있는지 궁금합니다.
(해결책)아나콘다 재설치시 마지막 체크박스에 이전 설정기록을 다 삭제하도록 꼭 체크하셔야 아나콘다 재설치 후에 탈이 없습니다!! 어제 질문드린 판다스 프로파일링 문제를 겪으면서 아나콘다를 두어번 재설치하는 과정에서 missingno까지 꼬여버린 것 같습니다 프롬프트 관리자 환경에서 설치를 마쳤음에도 missingno 실행이 안됩니다.. 2번째 수업(missingno를 처음 다뤘던 수업)에서 했던 파일을 돌려보아도 마찬가지입니다 일단은 프로파일링과 미싱노를 건너띄고 수업을 진행할 예정입니다!!
안녕하세요! 강의를 다 듣고, 블로그에 남겨주신 문제들을 풀어보고 있습니다. '백준 1325 효율적인 해킹 문제'인데, 시간 초과가 나는 기준을 이해하지 못해서 질문드립니다! import java.io.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; public class Main { private static int N, M; private static List<List<Integer>> graph; private static boolean[] visited; private static int dfs(int idx) { visited[idx] = true; int count = 1; for (int next : graph.get(idx)) { if (!visited[next]) { count += dfs(next); } } return count; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); graph = new ArrayList<>(N + 1); for (int i = 0; i <= N; i++) { graph.add(new ArrayList<>()); } for (int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); graph.get(b).add(a); } int max = -1; List<Integer> answer = new ArrayList<>(); for (int i = 1; i <= N; i++) { visited = new boolean[N + 1]; int count = dfs(i); if (max < count) { answer.clear(); answer.add(i); max = count; } else if (max == count) { answer.add(i); } } Collections.sort(answer); StringBuilder sb = new StringBuilder(); for (int n : answer) { sb.append(n); sb.append(" "); } bw.write(sb.toString()); br.close(); bw.close(); } } 이렇게 작성을 하니 자꾸 시간 초과가 나와서 chat gpt에 질문해보니 메모이제이션을 사용하면 해결할 수 있다는 답변이 나왔습니다. 이미 visited 를 사용해 이미 방문한 노드를 다시 방문하지 않는데, 메모이제이션을 사용하는게 의미가 있을까 싶었지만 일단 코드를 변경해봤습니다. import java.io.*; import java.util.*; public class Main { private static int N, M; private static List<List<Integer>> graph; private static boolean[] visited; private static int[] memo; private static int dfs(int idx) { if (memo[idx] != -1) { return memo[idx]; } visited[idx] = true; int count = 1; for (int next : graph.get(idx)) { if (!visited[next]) { count += dfs(next); } } memo[idx] = count; return count; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); graph = new ArrayList<>(N + 1); for (int i = 0; i <= N; i++) { graph.add(new ArrayList<>()); } for (int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); graph.get(b).add(a); } int max = -1; List<Integer> answer = new ArrayList<>(); for (int i = 1; i <= N; i++) { visited = new boolean[N + 1]; memo = new int[N + 1]; Arrays.fill(memo, -1); int count = dfs(i); if (max < count) { answer.clear(); answer.add(i); max = count; } else if (max == count) { answer.add(i); } } Collections.sort(answer); StringBuilder sb = new StringBuilder(); for (int n : answer) { sb.append(n); sb.append(" "); } bw.write(sb.toString()); br.close(); bw.close(); } } 이렇게 작성하니까 시간 초과가 나지는 않는데, 어느 테스트 케이스에서 memo 배열에 저장된 값을 사용하는건지 알 수 있을까요? 그리고 혹시 강사님은 이 문제를 이것과 다르게 푸셨을까요?? ++ 추가로 배열 대신 HashMap을 사용해도 시간 초과가 납니다... ㅠ import java.io.*; import java.util.*; public class Main { private static int N, M; private static List<List<Integer>> graph; private static boolean[] visited; private static Map<Integer, Integer> map; private static int dfs(int idx) { if (map.get(idx) != null) { return map.get(idx); } visited[idx] = true; int count = 1; for (int next : graph.get(idx)) { if (!visited[next]) { count += dfs(next); } } map.put(idx, count); return count; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); graph = new ArrayList<>(N + 1); for (int i = 0; i <= N; i++) { graph.add(new ArrayList<>()); } for (int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); graph.get(b).add(a); } int max = -1; List<Integer> answer = new ArrayList<>(); for (int i = 1; i <= N; i++) { visited = new boolean[N + 1]; map = new HashMap<>(); int count = dfs(i); if (max < count) { answer.clear(); answer.add(i); max = count; } else if (max == count) { answer.add(i); } } Collections.sort(answer); StringBuilder sb = new StringBuilder(); for (int n : answer) { sb.append(n); sb.append(" "); } bw.write(sb.toString()); br.close(); bw.close(); } }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 잘 따라서 수업듣고 있는데 왜 이런 에러가 뜨는지 도저히 모르겠습니다.
아직 노드버드 ch10 진행중입니다. 진행하면서 다른 글들도 참고하면서 진행중인데요 async await 사용 방식에 대해 문의드립니다. DB 데이타 조회, 생성 시 async 로 진행하는데 코딩 방식1 try{ const user = await User.findOne(...); ... await user.addFollowing(...); }catch(err){ next(err); } 코딩 방식2 User.findOne() .then((result) => { user.addFollowing(...); }) .then((result) => { ... }) .catch((err) => { next(err)}); 방식1은 await 키워드로 비동기 함수 호출하는 방식이구 아래는 then 을 통해 비동기 함수 호출 하는 방식인듯 한데요. 둘중 많이 쓰는 방식이 있을까요..?
안녕하세요! 이제 막 선생님 강의를 듣고 있는 PM 지망생입니다. 실습 초반부터 막혀 민망하지만,,,이걸 해결하지 못하면 진도가 안나가서요 ㅜㅜ 선생님이 화면에 보여주시는 Jira UI와 제 UI가 다른데 업데이트 때문일까요? 혹시 플랜때문인가 싶어 무료체험을 신청했는데도 UI가 달라 당황스럽습니다.. 저는 에픽 이름을 설정하는 필드가 없는데 왜 그럴까요.. 이름은 무시하고 요약 및 설명란 '신규 프로젝트'라고 작성하고 에픽을 생성하면 보드에 이슈가 포시되지 않는다고 뜹니다 ㅜㅜ(세번째 그림 참조)
import sys from collections import deque input = sys.stdin.readline answer = 0 H, k, r = map(int, input().split()) boards = [[deque() for _ in range(2**h)]for h in range (H+1)] boards[-1]= [deque(map(int, input().split()))for _ in range(2**H)] days=0 while days <r: days +=1 if boards[0][0]: answer += boards[0][0].pop() print(answer) for row in range(H): alpha = days % 2 for col in range(2**row): if boards[row+1][col*2+alpha]: boards[row][col].append(boards[row+1][col*2+alpha].popleft()) print(answer) 이 코드에서 boards[0][0].pop() 과 boards[row][col].append가 이해가 안됩니다! 저건 3차원이 되는건가요? 2차원 리스트는 원래 boards[0].append 이런식으로 표현하지 않나요? 그리고 입력값이 1 3 2 9 3 7 5 11 2 일때 출력값이 5 인데 어떻게 코드가 진행되는건지 모르겠습니다
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 실행했을때 H2 DB에CATEGORY,CATEGORY_ITEM,DELIVERY,ITEM,MEMBER,ORDERS,ORDER_ITEM 테이블이 생성되지않아서 문의드립니다. https://drive.google.com/file/d/1N63HWFHbE41DV2aGqkyVLrSnDDhDPcYg/view?usp=drive_link 코드 피드백 해주시면 감사하겠습니다.
React 진영에서 functional component나 hook 등은 순수 함수로 작성하도록 권장되는 것으로 알고 있는데요, renderBlogList 함수는 외부 스코프에 있는 loading , posts 값에 의존성을 가지기 때문에 순수함수가 될 수 없는 것으로 보이는데 이를 순수함수로 변경하는 것이 더 나은 코드를 작성하는 방법일까요? 아니면 굳이 그렇게 할 필요까지는 없을지 궁금합니다.
설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
저는 zcu106 보드로 ILA 생성 연습 중에 있습니다. 다만 VITIS에 프로젝트를 올리려할 때, 계속 다음과 같은 문제가 뜨네요. 다른 프로젝트에서도 VITIS에 올리려 할 때 아래 사진과 같은 문제가 발생합니다. 구글링해서 XILINX 홈페이지에서 저와 동일한 문제를 찾은 사람의 글을 찾은 결과, IP의 Makefile에서 replace OUTS = .o with OUTS = $(addsuffix .o, $(basename $(wildcard .c))) 과 같은 답변을 확인하고 수정해봤지만, 결과는 동일했습니다. 저는 VIVADO와 VITIS 모두 2022.1 버전을 사용하고 있습니다. VITIS LOG View에는 다음과 같은 문구가 적혀있습니다. org.eclipse.cdt.internal.core.settings.model.ExceptionFactory.createCoreException( ExceptionFactory.java:26 ) org.eclipse.cdt.core.CCorePlugin.mapCProjectOwner( CCorePlugin.java:890 ) org.eclipse.cdt.core.CCorePlugin$1.run( CCorePlugin.java:945 ) org.eclipse.core.internal.resources.Workspace.run ( Workspace.java:2292 ) org.eclipse.cdt.core.CCorePlugin.createCProject( CCorePlugin.java:930 ) com.xilinx.sdx.sdk.core.gen.AppCreationHandler.createCProject( AppCreationHandler.java:92 ) com.xilinx.sdx.sdk.core.gen.StandaloneProjectHandler.createCoreApp( StandaloneProjectHandler.java:67 ) com.xilinx.sdx.sdk.core.gen.AppCreationHandler.createApplication( AppCreationHandler.java:79 ) com.xilinx.sdx.sdk.core.gen.AppCreationHandler.execute( AppCreationHandler.java:69 ) com.xilinx.sdx.sdk.core.SdkAppCreationHandler.executeInternal( SdkAppCreationHandler.java:75 ) org.apache.logging.log4j.core.impl.MutableLogEvent@53c54af9 16:37:53 ERROR : Failed to create application project com.xilinx.sdx.sdk.core.gen.StandaloneProjectHandler.createCoreApp( StandaloneProjectHandler.java:150 ) com.xilinx.sdx.sdk.core.gen.AppCreationHandler.createApplication( AppCreationHandler.java:79 ) com.xilinx.sdx.sdk.core.gen.AppCreationHandler.execute( AppCreationHandler.java:69 ) com.xilinx.sdx.sdk.core.SdkAppCreationHandler.executeInternal( SdkAppCreationHandler.java:75 ) com.xilinx.sdx.sdk.core.SdkAppCreationHandler.lambda$1( SdkAppCreationHandler.java:67 ) org.eclipse.core.internal.resources.Workspace.run ( Workspace.java:2292 ) org.eclipse.core.internal.resources.Workspace.run ( Workspace.java:2312 ) com.xilinx.sdx.sdk.core.SdkAppCreationHandler.execute( SdkAppCreationHandler.java:66 ) com.xilinx.sdx.npw.NewProjectCreationHandler.createApplicationProject( NewProjectCreationHandler.java:237 ) com.xilinx.sdx.npw.NewProjectCreationHandler.internalExecute( NewProjectCreationHandler.java:385 ) org.apache.logging.log4j.core.impl.MutableLogEvent@53c54af9
프로젝트 배경: 배달이 삶의 일부를 차지한 현대시대, 배달 서비스 금액으로 인한 지출문제 프로젝트 목표: 음식가격보다 배달수수료가 더 부담되는 배달 수수료 측정 시스템을 개선하자. 가설: 배달 서비스를 통해 음식 배달을 시킬때 배달 수수료가 부담이 될것이다 프로젝트 소개: 배달이 삶의 일부를 차지한 현대시대, 음식가격 부담 뿐만 아니라 배달 수수료까지 부담하기 벅찬시대. 배달 수수료 를 줄이고자 배달 수수료 측정 시스템을 개선하고자 한다. 이런식으로 설정을 했었는데요 프로젝트 배경을 이 프로젝트 토픽을 생각해낸 배경을 적는것이 맞는건가요? 추가로 목표,가설,소개또한 가이드 문서에서 의도한대로 제가 맞게 설정을 했는지 궁금합니다.
#include <iostream> using namespace std; int a[9][9]; int b[9]; int main(){ freopen("input.txt","rt",stdin); int i,j,max,rev=0,tmp=2147000000; float x=0.0,sum=0.0; int c[9]; for(i=0;i<9;i++){ for(j=0;j<9;j++){ cin>>a[i][j]; sum+=a[i][j]; } b[i]=(sum/9.0)+0.5; sum=0.0; } for(i=0;i<9;i++){ for(j=0;j<9;j++){ tmp=a[i][j]-b[i]; if(tmp<0){ tmp*=-1; } if(tmp<max){ max=tmp; rev=a[i][j]; } if(max==tmp){ if(rev<a[i][j]){ rev=a[i][j]; } } } c[i]=rev; max=2147000000; } for(i=0;i<9;i++){ cout<<b[i]<<' '<<c[i]<<endl; } return 0; } 이렇게 짰을때 출력창에서 나머지는 다 똑같이 나오는데 첫번째 행의 평균과 가장 가까운수가 0이 나옵니다. 혹시 왜 이렇게 나오는지 알려주실 수 있나요...?
======================================== [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 교재 '6장 스프링 MVC - 기본기능' 의 20페이지에서 @Conroller로 표기되어 있는데 혹시 @Controller 아닌가요?