인터넷에 찾아보니 구성 속성" > "C/C++" > "코드 생성" > "런타임 라이브러리 를 /MT 나 /MD 로 맞춰주라고 해서 맞추기도 해봤는데 계속 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 세부 정보 오류 LNK2038 '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '0' 값이 '2'(Game.obj에 위치) 값과 일치하지 않습니다. 가메코딩 C:\Users\shhmu\Desktop\GameCoding_tmp\가메코딩\DirectXTex.lib(DirectXTexImage.obj) 1 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 세부 정보 오류 LNK2038 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MD_DynamicRelease' 값이 'MTd_StaticDebug'(Game.obj에 위치) 값과 일치하지 않습니다. 가메코딩 C:\Users\shhmu\Desktop\GameCoding_tmp\가메코딩\DirectXTex.lib(DirectXTexImage.obj) 1 이런 에러가 나타나는데 어떻게 해야 할까요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 시간 초과라고 뜨는데, 더 빠른 방법이 있나요?? import java.io.*; import java.util.*; class Node{ int v; int c; Node(int v, int c){ this.v=v; this.c=c; } } public class Main { public static ArrayList<Node>[] graph; public static int n,m,s, e; public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); n=sc.nextInt(); m=sc.nextInt(); graph = new ArrayList[n+1]; for(int i=1;i<=n; i++) graph[i] = new ArrayList<>(); for(int i=0; i<m; i++) { int a=sc.nextInt(); int b=sc.nextInt(); int c=sc.nextInt(); graph[a].add(new Node(b,c)); graph[b].add(new Node(a,c)); } s=sc.nextInt(); e=sc.nextInt(); int lt=1; int rt = 1000000000; int answer=0; while(lt<=rt) { int mid = (lt+rt)/2; if(count(mid)==1) { //e정점까지 갈 수있으면 answer=mid; lt = mid+1; //최대의 답을 찾아야하니까 } else rt = mid-1; } System.out.print(answer); } public static int count(int limit) { int[] ck = new int[n+1]; Queue<Node> q = new LinkedList<>(); q.add(new Node(s,0)); ck[s]=1; while(!q.isEmpty()) { Node now = q.poll(); int nowx = now.v; int nowc = now.c; for(Node ob : graph[nowx]) { if(ob.c>=limit && ck[ob.v]==0) { q.add(new Node(ob.v, ob.c)); ck[ob.v]=1; } } } return ck[e]; //마지막 점까지 갈수 있다면 1리턴, 아니면 0리턴 } }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 ^^ 강의 너무 잘 듣고 있습니다. DP 문제를 풀다보면.., 시작하기 전에 해당 문제를 바텀업으로 풀어야할지, 탑바텀으로 풀어야할지 어떻게 결정할 수 있을까요? 제 느낌은 바텀업풀이가 점화식을 유도할 수 있다면 코드 자체가 간단하여(재귀호출x) 구현 난이도가 쉬운데, 점화식을 생각하는 과정이 경우에 따라 매우 어려운것 같습니다. 탑바텀 풀이는 완전탐색과 동일한 상태에서 메모이제이션 을 잘 정의함으로써 문제를 풀 수 있는데, DP배열의 상태정의를 어떻게 하느냐에 따라, 테스트케이스는 맞지만 제출시 틀리는 결과가 나오는 경우가 종종있습니다 (구현에서 실수 잦음) 어떤 식으로 DP의 풀이를 결정하고 문제를 들어가는지 질문드려요. 감사합니다.!!
임시 객체 개념 자체가 많이 낯설어서 2가지 질문을 해보려고 합니다 ㅠㅠ 클래스가 함수의 매개변수나 반환자료형일 경우, 상수형 참조를 하라고 하셨는데 특별히 이렇게 해야하는 이유가 있는걸까요?? 19분쯤에 등장하는 예제에서 함수의 매개변수를 상수형 참조로 바꿔도 여전히 변환생성자가 불러와지는 걸 봤을 때는 특별히 차이점이 있어보이지 않습니다... 17분 50초 쯤에 등장하는 '비const 참조는 lvalue에만 바인딩할 수 있습니다" 라는 오류가 등장하는데 이 오류가 이해가 되질 않습니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 아래와 같이 작성했는데, 4번째 테스트 케이스에서 답이 출력 되지 않습니다. 어디가 잘 못된건지 궁금합니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); int s=sc.nextInt(); int e=sc.nextInt(); int k=sc.nextInt(); int[] ck = new int[10001]; for(int i=0; i<k; i++) { //웅덩이 체크 int a=sc.nextInt(); ck[a]=1; } Queue<Integer> q = new LinkedList<>(); q.add(s); int L=0; while(!q.isEmpty()) { int len = q.size(); for(int i=0; i<len; i++) { int now = q.poll(); if(now==e) { System.out.print(L); System.exit(0); } for(int nx : new int[] {now-1,now+1,now+5}) { if(nx>=1 && nx<10001 && ck[nx]==0) { //이동할 수 있는 범위이고, 아직 방문 안했고, 웅덩이가 아니라면 ck[nx]=1; q.add(nx); } } } L++; } } }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. dp를 작성하는 else 부분에서 배열의 범위가 벗어났다고 뜨는데, 어디가 잘 못 된건가요??? import java.io.*; import java.util.*; public class Main { public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); int[][] map = new int[n][m]; int[][] dp = new int[n][m]; for(int i=0; i<n; i++) { String s=sc.next(); for(int j=1; j<=m;j++) { map[i][j]=s.charAt(j)-'0'; } } for(int i=0; i<n ; i++) { for(int j=0; j<m; j++) { if(map[i][j]==0) dp[i][j]=0; else { //에러 부분(배열 범위 벗어남) int a=map[i-1][j]; int b=map[i][j-1]; int c=map[i-1][j-1]; int k = Math.min(a, Math.min(b, c)); dp[i][j] = k; } } } } }
안녕하세요 선생님. 구현 알고리즘에 대해 취약한 것 같아 질문 드립니다. 현재 1-O까지 풀면서 답안을 안 보고 푼건은 2번 정도인 것 같습니다. 구현 유형의 알고리즘이 약하다고 생각됩니다. 이런 와중에 2주차 그래프이론을 바로 학습하는게 맞을지, 아니면 구현 관련 알고리즘을 좀 더 찾아서 풀어보는게 맞을지 잘 모르겠습니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요. 다형성 챕터 강의 완강하고 제가 수업을 듣고 개념을 제대로 이해한 것이 맞는지 궁금해서 질문 올립니다. 1. 정적바인딩은 컴파일시 결정된다. 모든 함수는 정적바인딩. Knight k; MovePlayer(&k); void MovePlayer(Player* player) { player->Move(); // Move Player! } 이 함수가 매개변수로 최상위 클래스 타입의 포인터를 매개변수로 받고 있기에 함수 입장에서 컴파일시 Move함수가 최상위 클래스의 Move함수로 인식하기 때문에 이런 현상이 일어나는 것 인가요? 2. 동적바인딩은 런타임시 결정된다. 동적바인딩(가상함수)으로 함수를 설정하고 싶으면 virtual 키워드를 함수앞에 사용. 클래스 내에 가상함수가 있다면, 그 클래스를 생성할때 그 클래스주소 (offset 0)에 vftable 주소가 들어감, vftable에는 가상함수로 지정한 함수들의 주소가 있다. 이 vftable로 인해 최상위 객체로 관리하는 함수에서 파생클래스의 주소를 넘겨주어도 알아서 재정의된 가상함수를 찾아서 실행해 준다.
안녕하세요 선생님, 올려주신 강의 잘 듣고 있습니다. BFS를 이용하여 3-D 문제를 풀고 있습니다. http://boj.kr/c6c17d2eb9a749febe75792df0897caf Tree 깊이가 변할 때마다 fire() 라는 함수를 사용하여 불의 위치를 업데이트하는 방법으로 구현했습니다. 예제는 잘 통과하는데, 성공하지 못했습니다. 혹시 반례를 알 수 있을까요? 감사합니다.
재귀를 이용해서 dp를 하는 방식이 아닌 선생님께서 배낭채우기 할 때 처럼 표를 완성하여 dp를 했는데 무엇이 문제 인지 잘 모르겠습니다. 이 문제에서는 표에 넣을 수 있는 보석의 인덱스를 저장을 했고 표가 완성되면 넣어준 보석을 보석목록에서 제거하고 다음 가방을 완성하는 방식으로 코드를 작성했는데 무엇이 문제인지 잘 모르겠습니다. http://boj.kr/2b01ce15326a43c9ad3c8f340157eab3
현재 큰돌 강사님이 풀어주신 문제 해설은 이해 됐습니다. 그런데 scv갯수가 주어지고 한 개체를 한번에 여러번 공격을 못하기에 (모든 scv의 총 체력/한번에 줄 수 있는 데미지)이렇게 해서 구할 수도 있지 않을까 했습니다. 이를 바탕으로 코드를 썻으나 틀렸다고 나오는데 이게 왜 되지 않는지 몰라서 질문드립니다. 다음은 해당 코드입니다. http://boj.kr/dab5e07b909146eba418c449e7c219f9
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 테스트케이스 4번, 5번에서 에러가 뜹니다. 어디가 잘 못 된건지 궁금합니다. import java.io.*; import java.util.*; class Node implements Comparable<Node>{ int v1; int v2; double c; Node(int v1, int v2, double c) { this.v1=v1; this.v2=v2; this.c=c; } @Override public int compareTo(Node o) { //double형은 이렇게 한다. if(this.c<o.c) return -1; else return 1; } } public class Main { public static int n,m; public static int[] unf; public static ArrayList<Node> graph = new ArrayList<>(); public static ArrayList<Integer> x = new ArrayList<>(); public static ArrayList<Integer> y = new ArrayList<>(); public static int find(int v) { if(v==unf[v]) return v; else return unf[v] = find(unf[v]); } public static void union(int a, int b) { int fa = find(a); int fb = find(b); if(fa!=fb) unf[fa] = fb; } public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); n=sc.nextInt(); m=sc.nextInt(); unf = new int[n]; for(int i=0; i<n; i++) unf[i] = i; for(int i=0; i<n; i++) { int a=sc.nextInt()-1; int b=sc.nextInt()-1; x.add(a); y.add(b); } for(int i=0; i<n; i++) { //점과 점 사이의 거리를 구하는 구문 for(int j=i+1; j<n; j++) { double dis = Math.sqrt((x.get(j)-x.get(i)) *(x.get(j)-x.get(i)) + (y.get(j)-y.get(i)) * (y.get(j)-y.get(i))); graph.add(new Node(i,j,dis)); } } for(int i=0; i<m; i++) { //이미 연결되어 있는 점들은 union해준다 int a=sc.nextInt(); int b=sc.nextInt(); union(a-1,b-1); } Collections.sort(graph); double answer=0; for(int i=0; i<graph.size(); i++) { //크루스칼 int fa = find(graph.get(i).v1); int fb = find(graph.get(i).v2); double cost = graph.get(i).c; if(fa!=fb) { //union(fa, fb); unf[fa] = fb; answer+=cost; } } System.out.format("%.2f", answer); //소수점 출력은 System.out.format으로 } }
안녕하세요 선생님. 예제도 다 맞는데 4%에서 틀렸습니다.가 나옵니다 ㅠㅠ 제 코드에 어느 부분이 문제인지 모르겠어서 질문드립니다.. 아래는 제가 제출한 코드입니다. #include<bits/stdc++.h> using namespace std; typedef long long ll; ll x, y, z, lo, hi, ret = -1; bool check(ll mid) { ll change_z = (double)(y + mid) / (x + mid) * 100; return change_z > z; } int main() { cin >> x >> y; // x : 게임 횟수, y : 이긴 횟수, z : 승률(y / x * 100) z = (double)y / x * 100; lo = 1; hi = 1e9; while(lo <= hi) { ll mid = (lo + hi) / 2; if(check(mid)) { hi = mid - 1; ret = mid; } else lo = mid + 1; } cout << ret << "\n"; }
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
안녕하세요 강사님! 저는 강의 Part4,5 수강하고 서버 제작한 뒤에 원래 제가 만들어놨던 컨텐츠에 서버 붙이는 중인데요 패킷 송수신까지 잘 마무리 되었고 이동 동기화를 진행하는 도중에, 강의에서 연습했던 환경(평지)과 달리 제가 만든 컨텐츠에서는 울퉁불퉁한 지경도 있고 다양한 오브젝트들(몬스터, 건물, 나무...etx)이 있어 충돌을 고려해야 하는 상황인데요. 충돌이 발생하면 오차가 점점 커기는걸로 봐서 추측하건데, 한 명의 클라이언트의 움직임에 대해서 각각의 클라이언트에서 충돌처리가 일어나기때문에 오차가 점점 커진다고 판단이 되었습니다. 이러한 충돌로 인한 이동 동기화 오차를 줄일 수 있는 방법으로는 어떤 방법이 있을까요? 제가 생각해본걸로는.. 다음과 같은 방법이 생각났는데 클라가 먼저 이동해서 발생하는 충돌이벤트도 같이 서버에 패킷으로 보내준다. (위치정보+방향+충돌이벤트) 서버는 받은 패킷을 모든 클라에게 뿌린다. 다른 클라들은 해당 캐릭터를 기존과 같은 방식으로 이동시키되(방향으로만 전진) 충돌이벤트가 있다면 받은 위치정보로 AI 기능(?)을 활용해서 추가로 이동시킨다. 이러면 충돌이 발생할 때마다 AI로 움직여주고. 그럼 그 사이에 해당 캐릭터가 또 움직이면 움직임 자체에 텀이 생겨버릴것이라는 문제점이 나타나네요 ㅠㅠ.. 이러한 이동 동기화 문제점을 어떤방식으로 해결하는지 궁금합니다!