tessilation 을 통해서 displacement mapping 을 좀 복잡한 mesh 에 적용을 해봤는데 gpu 가 갈리는 소리가 나서요. 아무래도 삼각형 개수가 기하급수적으로 늘다보니 gpu load 가 클거 같은데 tessilation 이 실제로 필요사양이 높은가요? 그리고 현업에서도 tessilation 사용하는데 제약이 많은지 궁금합니다.
안녕하세요 선생님. 복습차원에서 문제들을 다시 풀어보고 있는데 문득 의문이 들어서 질문 드립니다. 정답 코드에서 메모리제이션 후에 ret = 0; 을 빼먹으니까 틀렸다고 하는데 어차피 ret은 뒤에서 그 값이 할당되는데 없어도 되는거 아닌가요?? 어떤 차이가 있어서 ret = 0을 넣은 경우에는 정답이고 빼면 틀리는지 궁금합니다!
배열을 입력 받을 때 for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ scanf("%1d", &arr[i][j]); } } 으로 하면 틀렸습니다가 뜨고 for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ cin >> arr[i][j]; } } 로 하니까 바로 맞았습니다가 뜨는데 둘의 차이점이 있는지 궁금합니다!!
안녕하세요 :) 2-J 문제 관련 질문 드립니다. 우선, 제 풀이를 제출했을때 맞았습니다가 뜹니다. http://boj.kr/f2ffd86d82cb42679b70ba68b633969e 그런데, IDE 상에서는 아래와 같이 3개의 경고가 뜹니다. 경고 C6385 'a[y]'에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 '416'바이트인데 실제로는 'nx'바이트만 읽을 수 있습니다. 경고 C6385 't[y]'에서 잘못된 데이터를 읽고 있습니다. 읽기 가능한 크기는 '416'바이트인데 실제로는 '-8'바이트만 읽을 수 있습니다. 경고 C6386 't[y]'에 쓰는 동안 버퍼 오버런이 발생했습니다. 쓰기 가능한 크기는 '416'바이트인데 실제로는 'nx'바이트만 쓸 수 있습니다. 보통 배열의 잘못된 인덱스/범위에 접근했을때 이런 오류가 뜨는 것 같은데 제가 생각하기에는 범위를 벗어나는 반례가 없다고 생각되어서 질문 드립니다. 제 코드에 어떤 문제가 있는지 봐주실 수 있을까요? (왜 백준에서는 통과되는지도 궁금합니다..) 감사합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/cf2c8a947f5041b69efd55961657526c 왜 틀린건가요..? ㅜㅜ 주어진 예제들은 잘 맞아서 반례를 못찾겠습니다 ㅠ => 엥...? 공유한 링크 들어가면 맞다고 뜨고 제 아이디로 백준에 들어가면 틀리다고 뜨네요 아래 질문 보고 혹시나 해서 들어가봤더니... 뭐죠,,,, 이렇게 나와서 제가 작성한 코드가 올바른 코드가 맞는지 알 수 있을까요,,? 알 수가 없네요,, ㅜㅜ
안녕하세요 선생님 브루트포스 히든퀘스트를 풀고 있는데요, 계속 시간초과가 떠서 질문드립니다. 재귀 완탐으로 풀었는데 시간초과가 뜨네요. 그래서 다른분들 풀이 구글링해서 봤는데 대부분 3중 for문 콤비네이션으로 해결했더라구요. 제 로직에는 문제가 없다고 생각했는데, 혹시 제 방법으로는 해결할 수 없는 문제인가요? 나름 가지치기도 했는데 안풀립니다ㅠㅠ 2798 블랙잭 문제입니다 http://boj.kr/22b25fa79ad74c69b0797537b4a7669f
안녕하세요 큰돌님 https://www.acmicpc.net/submit/2583/65432177 제가 짠 코드 입니다.. ㅠㅜ 답안지를 보고 이해 할려고 해도 이해가 되지 않아 질문 드립니다.. 저랑 배열 사이즈(m, n ,x y)가 다른 점에서 이해가 힘드네요. 저는 배열을 x y 좌표축과 똑같이 봐고 시도 해봤습니다. 그래서 궁금한 점은 3가지 입니다. 어떻게 x1~x2까지 사각형을 색칠 할 때 x2는 포함하지 않으셨나요? 탐색 범위 설정시에 m과 n 초과면 continue를 하는게 아닌가요? 함수 호출 횟수가 넓이인게 정확하게 이해가 되지 않습니다 ㅠㅠ
안녕하세요 큰돌님 이 문제 제가 이해를 못하고 있는게 있는데요 일단 결론부터 말하면 info[2][500000] 처럼 배열을 2차원으로 만들어서 홀,짝 시간으로 분할해서 문제를 푸는것과 그냥 info[500000]로 각 배열 요소에 시간을 기록해서 배열을 순회하면서, 홀짝 구분해서 답을 찾는거랑 무슨차이인지 잘 모르겠습니다. 일단 아래 제풀이는 틀렸습니다. 주어진 테스트 케이스는 맞는데 백준게시판 반례들 몇개가 틀리게 나오는데요... (ex 입력 27297 339652 --> (답 : 425 , output : 426) 대부분 1~2 차이로 틀립니다. 이것 저것 다른 답안들이랑 비교하면서 디버깅해보면 info 배열을 구성하는과정에서 틀린게 있는것 같은데요....... 위에 굵게+기울임 글씨체로 쓴 부분 처럼 1차원,2차열 두가지 배열이 정확히 어떤차이가 있는건지 잘 모르겠습니다. 예를들어서, 제가 생각하기에는 2차원 배열을 통해서 홀수,짝수 시간을 구분할 경우에는 특정 지점 A에서 무조건 info[0][A], info[1][A] 둘중에 하나만 값을 가져야 한다고 생각하는데 제가 틀렸나요?(왜냐면 BFS를 통해서 최단경로를 찾으니까 info[0][A] info[1][A]에 두개에 값이 기록될수가 없음) // Example program #include <iostream> #include <string> #include <vector> #include <algorithm> #include <queue> #include <stack> #include <unordered_map> #include <map> #include <limits.h> using namespace std; int n,k; int info[500002]; // 수빈이 위치,시간 정보 queue<int> q; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n>>k; fill(&info[0], &info[500001], -1); if(n==k){ cout<<0<<'\n'; return 0; } //------------------------------------------------------------ // BFS로 수빈이 위치 전부 구하기 else { q.push(n); info[n]=0; while(q.size()){ int prev=q.front(); q.pop(); for(int next :{prev-1,prev+1, prev*2}){ if(next<0 || next>500000) continue; if(info[next]!=-1) continue; info[next]=info[prev]+1; q.push(next); } } //-------------------------------------------------------------- // 동생위치를 구하면서 -> 동생,수빈이 위치가 같아지는 지점을 찾음 -> // 그리고 수빈이가 소모한 시간이 동생보다 적거나 같으면 -> 시간차이가 짝수인지 확인 int pos=k; // 동생 초기 위치 int t=0; // 초기 시간 while(pos<=500000){ if(info[pos]<=t){ // 특정 동일위치에서 수빈이가 소모한 시간이 더 적을때 if((info[pos])%2 ==0 && t%2==0){ //둘의 시간이 짝수이면(=시간 차이가 짝수면) cout<<t<<'\n'; break; } else if((info[pos])%2 && t%2){ //둘의 시간이 홀수이면(=시간차이가 짝수면) cout<<t<<'\n'; break; } } t++; pos+=t; } if(pos>500000) cout<<-1<<'\n'; } }
안녕하세요! 궁금한 점이 있어서 질문 드립니다. 2-H 문제 해설에서 s[i]를 int형으로 반환해서 풀이하시던데 혹시 특별한 이유가 있을까요?? 저는 s[i]를 그냥 char형으로 풀었습니다. http://boj.kr/9de33b348bcb40ee958c4cfbc845c305
안녕하세요 강의를 수강 중에 char*[]자료형에 대한 질문이 생겨 글을 남깁니다 제 컴파일러에서는 해당 방식으로 문자열을 저장하면 오류가 발생하는데, 이는 컴파일러 버전 때문인가요..? 앞에 const를 붙여야 정상적으로 초기화가 되는데, main의 파라미터로 쓰이는 char *argv[]는 오류가 발생하지 않아 문의드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/8d7c38a0a361454191ef6df051497ac7 이 코드는 왜 안되는지 잘 모르겠습니다 ㅠㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. void combi(int a, vector <int> b) { if (b.size() == k) { print(b); return; } for (int i = a + 1; i < n; i++) { b.push_back(i); combi(i, b); b.pop_back(); } return; } 위의 함수에서 for문 다음의 return 함수를 없애도 함수의 동작에는 문제가 없고 더 빨리 동작하는데 return을 쓸 때의 이점이 있나요? 다른 코드들을 볼 때도 return;이 없어도 동일하게 동작하지만 return;이 있는 많은 예문들을 보게 되는데 return;을 코드에 추가하는 그 이유를 알고 싶습니다. 또한 return;을 넣는 순간 동작 시간이 약 0.08초에서 0.22초로 증가하게 되는데 그 이유를 알고 싶습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 로직 자체는 강사님이 알려주신 흐름과 동일합니다.. 언어만 java로 구현한 것일 뿐인데 시간초과를 계속 밷어내요... 혹시 자바로 풀어보신 분이 있으시다면.. 어떤 부분이 문제일것 같은지 힌트라도 슬쩍 부탁드립니다..ㅠ import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { public static ArrayList<Integer>[] graph; public static boolean[] visited; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); String[] input = br.readLine().split(" "); int N = Integer.parseInt(input[0]); int M = Integer.parseInt(input[1]); int[] resArr = new int[N + 1]; visited = new boolean[N + 1]; graph = new ArrayList[N + 1]; int mx = -99; for(int i = 1; i <= N ; i++) graph[i] = new ArrayList<>(); for(int i = 0; i < M; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int from = Integer.parseInt(st.nextToken()); int to = Integer.parseInt(st.nextToken()); graph[to].add(from); } for(int i = 1; i <= N; i++) { Arrays.fill(visited, false); resArr[i] = go(i); mx = Math.max(mx, resArr[i]); } for(int i = 1; i < resArr.length; i ++) if(resArr[i] == mx) sb.append(i).append(" "); System.out.println(sb); } public static int go(int idx) { visited[idx] = true; int cnt = 1; for(int next : graph[idx]) { if(!visited[next]) { cnt += go(next); } } return cnt; } }