묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
output.worldPosition 질문드립니다
worldPosition을 따로 저장해야하는 이유는 버텍스 쉐이더로 넘어가게 되면 결국 스크린좌표계로 까지 변환이되어서 원하는 좌표로 남지 않아서 된다는 것은 이해했습니다.강의에서보면 output.worldPosition = input.position;로 저장하게 되는데 이렇게 저장하게되면 로컬 좌표계로 저장이되기 때문에output.position = mul(input.position, W);output.worldPosition = output.position;이렇게 저장해야 해당 모델의 월드좌표계가 저장되는 것이 맞는것 같은데 혹시 제가 잘못 이해한 부분이 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-X 시간초과 질문입니다!
안녕하세요!extendCCTV함수 부분에서 강의 코드와 살짝 다르게 모든 while문을 다음과 같이 작성했더니 시간 초과가 발생합니다! 내부의 조건문을 이렇게 작성했을 때 시간초과가 발생하는 이유가 궁금합니다..!while(true) { int ny = y + dy[dir]; int nx = x + dx[dir]; if(ny<0 || ny>=n || nx<0 || nx>=m || a[ny][nx]==6) break; if(a[ny][nx] == 0) { a[ny][nx] = 8; _change.push_back({ny, nx}); } y = ny; x = nx; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 코드 링크를 잘못 올려서 다시 올립니다.
http://boj.kr/44c6637eb356484a8f22139b8d4f217e 링크를 잘못올려서 다시 올립니다ㅜㅜ답안에는 map을 이용해서 풀었는데 이 방법으로해도 크게 문제없는것 같은데 왜 틀렸다고 나오는지 알고 싶습니다! 감사합니다
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션 5 - C 스타일 캐스팅에서 offset관련하여 질문이 있습니다
포인터 간 캐스팅에서dog -> age = 10; 코드로 인해 침해 당하는 부분이 Knight가 Player로부터 상속된 요소들이 모여있는 부분이라면 상속된 요소들이 모여있는 부분의 offset이 0번인건가요?Dog클래스에서 age의 offset이 0번인것은 알겠지만, 상속이 이루어진 클래스, 특히 class Player{public:virtual ~Player() { }}class Knight : public Player{public: Player* target;int hp;int defence;};와 같은 클래스에서 offset을 어떻게 구분할 수 있는지 궁금합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맥북 m2 vscode 설치에 대해 질문이 있습니다!
맥북에 vscode를 설치하는 과정에서 막히는 부분이 있습니다.brew install gcc를 통해 gcc를 설치했습니다.다음으로cd /usr/local/includemkdir bitscd bitsvi stdc++.h부분을 하려고 하는데사진과 같이 'include' 파일이나 디렉토리를 찾을 수 없다고 나옵니다.그래서 그냥 local에 디렉토리를 생성하려고 보니 'permission denied'가 뜹니다.맥북 m1의 방식으로 하려고 보니 역시 'permission denied'가 뜹니다.이 오류를 고칠 수 있는 방법이 있을까요?그리고 이 과정을 다 진행하면 vscode가 깔리는 것인지 vscode를 깔고 진행해야하는 것인지를 모르겠습니다.혹시 vscode에 대한 설정이 잘 안되면 xcode를 활용해서 강의를 진행해도 라이브러리나 함수를 사용하는 데 지장이 없을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 문제 이해
만약에 m이 3이고 치킨집이 5개면5C1인 경우 5C2, 5C3인 경우의 조합들을 다 구해서각각의 경우에 대한 치킨 거리를 계산한 후 최종적인 최솟값을 구하는 문제인 줄 알았습니다.예시)5C1 이면 m=3이니까 {0} -> 각 집들의 치킨 거리를 구한 후 더한 값{1} 위와 같음{2} 위와 같음{3} 위와 같음{4} 위와 같음5C2 이면{0,1}{0,2}{0,3}...이렇게 전부의 경우에 대한 거리 값을 구한 후 최소를 찾는 건 줄 알았는데위의 방법이 아니라 그냥 m=3이면5C3의 조합들 중에서 최소가 나오는 경우를 구하면 되는 건가요?? 제가 문제를 잘 이해를 못하는 것 같아서 질문 드립니다!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - M 3986 deque 시간 초과
안녕하세요 큰돌님1 - M 3986 좋은 단어 문제를 deque 를 이용해deque 이 비거나 하나만 남을 때까지 반복하면서back 과 다음 back 이 같은 경우 두 개의 back 을 모두제거하고 아닌 경우 첫번째 꺼낸 back 을 다시 front로push 하는 방식으로 풀고자 했습니다!! 제 생각으로는 deque 의 최대 반복 되는 수가 처음 문자열의 크기를 넘지 않을 것 같아서 시간초과에 문제 없을 줄 알았는데 시간 초과가 나옵니다 어떠한 이유에서 시간초과가 나오게 되었는지 여쭤보고자 질문 드립니다!! 감사합니다! 코드https://www.acmicpc.net/source/64697159
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
현업 visualstudio stl vs EA STL
안녕하세요 공부하다가 궁금한게 있어서요 stl을 잘활용해야한다고 하셨는데 초심자지만 감히 호기심 차원에서 질문을해봅니다..! (따지는건 절대아닙니다! 그냥 학습차원에서 궁금해서요!)제가 주워 듣기론 EA STL이 좀더 게임개발에 맞춰 기존 stl을뜯어고친 STL이라서 성능향상에 좋다는 소리를 들었고visualstudio 에서 제공하는 stl같은 경우는 정확히 뭐가 안좋다는 건진 모르겠지만 좋지는 않다고 하더라구요강사님 생각은 어떤지 궁금해서 물어봐요..!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 왜 틀렸는지 모르겠습니다
http://boj.kr/6fd1c581d7154d70a7523d1151aec403제가 작성한 코드입니다. map을 이용하지 않고 풀긴했지만 답안과 크게 다른게 없다고생각하는데 틀렸다고 나옵니다왜 틀렸는지 알고 싶습니다! 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 케이스 질문 처음 올려드립니다.
9996번 문제입니다#include <iostream> #include <vector> using namespace std; int N; string strPattern; vector<string> v; string input; int main() { cin >> N; cin >> strPattern; string left = ""; string right = ""; int index = 0; while (strPattern[index] != '*') { left += strPattern[index]; ++index; } index = strPattern.find('*') + 1; right = strPattern.erase(0, index); for (int i = 0; i < N; ++i) { cin >> input; v.push_back(input); } for (int i = 0; i < v.size(); ++i) { // +ADD if (left.size() + right.size() > v[i].size()) { cout << "NE" << endl; continue; } // string leftcopy = v[i]; string rightcopy = v[i]; if (left.size() <= leftcopy.size()) leftcopy = leftcopy.erase(left.size(), leftcopy.size() - 1); if (right.size() <= rightcopy.size()) rightcopy = rightcopy.erase(0, rightcopy.size() - right.size()); if (leftcopy == left && rightcopy == right) cout << "DA" << '\n'; else cout << "NE" << '\n'; } return 0; }코드를 이렇게 작성하고 저쪽 주석 +ADD 부분이 없을때는 65% 에서 Fail 뜨고 저 ADD 부분을 추가했을때 성공이 떴습니다1a*aaaaaa일때 정답이 어떻게 되는지 설명 부탁드립니다!제가 생각했을때는 DA 같습니다!
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
4번 문제만 계속 틀립니다.
안녕하세요 선생님!항상 좋은 강의 감사히 잘 듣고 있습니다.이번 문제에서 제 코드로는 4번 문제가 계속 틀렸다고 나와서 선생님 코드 그대로 따라했는데도 4번 문제가 틀렸다고 되더라구요... 채점기 output이 잘못된건지 제가 짠 코드가 잘못된건지 확인 부탁드립니다...! 제 코드#include <stdio.h> #include <cmath> int n; int a[11]; int b[100]; int c[1025]; int sum; int idx = 1; void DFS(int x) { if(x == n+1) { sum = 0; for(int i = 1; i <= n; i++) if(b[a[i]] == 1) sum += a[i]; c[idx++] = sum; } else { b[a[x]] = 1; DFS(x+1); b[a[x]] = 0; DFS(x+1); } } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); DFS(1); for(int i = 1; i <= pow(2, n); i++) { int temp = c[i]; if(temp == 0) continue; for(int j = 1; j <= pow(2, n); j++) { if(i == j) continue; if(temp == c[j]) { printf("YES"); return 0; } } } printf("NO"); return 0; }선생님 코드#include <stdio.h> int n; int a[11]; int total = 0; bool flag = false; void DFS(int x, int sum) { if(sum > (total/2)) return; if(flag) return; if(x == n+1) { if(sum == (total/2)) { flag = true; } } else { DFS(x+1, sum+a[x]); DFS(x+1, sum); } } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); total += a[i]; } DFS(1, 0); if(flag) printf("YES"); else printf("NO"); return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문입니다
제가 짠 코드가 예제출력은 맞게 나오는데 제출했을 때 틀렸다고 나옵니다.강의 보기 전에 짠거라서 강사님과는 다른 방향으로 풀었지만 어디서 잘못됐는지 궁금합니다. #include <iostream> #include <string> using namespace std; string s; int mo[21]; int cnt; int main(){ while(true){ cin >> s; cnt=0; if(s == "end") break; //s가 높은 품질이 아니면 //1번째 조건 if(s.find('a') && s.find('e') && s.find('i') && s.find('o') && s.find('u') > 20){ cnt += 1; } //2번째 조건 fill(&mo[0], &mo[0]+21, 0); for(int i=0; i<s.size(); i++){ if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u'){ mo[i] = 1; } else{ mo[i] = 2; } } if(s.size()>=3){ for(int i=0; i<s.size()-2; i++){ if(mo[i] == mo[i+1] && mo[i+1] == mo[i+2]){ cnt+=1; } } } //3번째 조건 for(int i=0; i<s.size(); i++){ if((s[i] == s[i+1]) && s[i] != 'e' && s[i] != 'o'){ cnt += 1; } } //cnt가 1이라도 있으면 낮은 품질 if(cnt>=1){ cout << "<" << s << "> is not acceptable." << '\n'; } //그렇지 않으면 높은 품질 else{ cout << "<" << s << "> is acceptable." << '\n'; } } return 0; }
-
미해결홍정모의 따라하며 배우는 C++
5.4 goto
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 강의를 수강 중인 학생입니다. 다름이 아니라 만약 if문을 이용해서 어떤 조건을 만든 다음, 해당 조건이 성립하면 밑의 코드들을 몇 개 뛰어넘고 다른 코드로 바로 이동하기 위해서는 goto 말고 다른 방법이 있을까요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 반례 부탁드립니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 예제는 통과되었는데 틀려서 어디가 틀렸는지 계속 찾아보았지만 못 찾아 질문 남깁니다.http://boj.kr/1e440eca5c9e4ac69c978a0f9289603b
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 런타임 에러(Segfault)
안녕하십니까 강사님. 항상 강의 잘 듣고 있습니다. 해당 회차의 강의를 듣기 전에 개인적으로 문제를 풀어보았으나, Segfault 런타임 에러가 발생하였습니다. 그 이유를 알고싶어 질문드립니다.#include <bits/stdc++.h> using namespace std; int n, h, nx, ny, max_h, cnt; int dx[] = { 0, 1, 0, -1 }; int dy[] = { 1, 0 ,-1, 0 }; int a[101][101]; bool visited[101][101]; vector<int> ret; void DFS(int x, int y) { visited[x][y] = true; for (int i = 0; i < 4; i++) { nx = x + dx[i]; ny = y + dy[i]; if (nx < 0 || nx >= n || ny < 0 || ny >= n) continue; if (a[nx][ny] > 0 && !visited[nx][ny]) { DFS(nx, ny); } } return; } int main() { ios_base::sync_with_stdio; cin.tie(NULL); cout.tie(NULL); // 지도 채우기 cin >> n; fill(&a[0][0], &a[0][0] + 101 * 101, 0); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } max_h = *max_element(&a[0][0], &a[0][0] + 101 * 101); for (int i = 1; i < max_h; i++) { fill(&visited[0][0], &visited[0][0] + 101 * 101, false); cnt = 0; // a의 전체 높이를 1씩 내리기 for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { a[j][k]--; } } // 연산 for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { if (a[j][k] > 0 && !visited[j][k]) { DFS(j, k); cnt++; } } } ret.push_back(cnt); } // 결과 출력 cout << *max_element(ret.begin(), ret.end()) << "\n"; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 p67 질문이 있습니다
int main() { fill(&a[0], &a[10], 100); for(int i = 0; i < 10; i++){ cout << a[i] << " "; } cout << '\n'; fill(&b[0][0], &b[9][10], 2); for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ cout << b[i][j] << " "; } cout << '\n'; } return 0;이 코드에서 fill(&a[0], &a[10], 100); 이 부분과 교안에 설명된 부분을 보면 알 수 있듯이 마지막에 쓰이는 인덱스는 포함되지 않아 실제로 a[9]까지 초기화가 가능한 것으로 이해를 하였습니다 그런데 왜 밑에 2차배열을 초기화하는 fill(&b[0][0], &b[9][10], 2);에서는 b[10][10]이 아닌 b[9][10]인지 궁금합니다. 또 b[9][9]로 수정하여 실행해본 결과가b[9][10]으로 수행한 결과와 같은 이유도 궁금합니다! 긴 질문 죄송합니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
채점 프로그램 관련 질문
안녕하세요 !채점 프로그램 관련 문의가 있어서 글을 작성하게 되었습니다.전에 풀었던 문제들을 다시 풀어보는 과정에서 전에 100점이 나왔던 문제들을 다시 한번 채점 프로그램을 돌리니 wrong_answer이라고 나와서(기존의 AA파일을 돌림) 답안 소스로 테스트를 해보았는데 똑같이 wrong_answer 라고 계속 나오는 문제가 발생해서 글을 작성하게 되었습니다.감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
9.5 증감연산자에서 예제 실행이 이상해요
결과값이 위 그림과 같이 32758로 이상하게 나옵니다그런데 아래와 같이 friend 함수에서 입력 파라미터에서 const와 reference를 없애니 정상적으로 나옵니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-T 1학년, dp 배열의 초기화 관련
안녕하세요 큰돌님 1학년 문제를 풀었는데, dp배열 초기화의 유무에 따라 답이 갈립니다. 저는 0이라는 값도 결과값이 될 수 있는 값 중 하나라고 생각하여 dp배열을 -1로 초기화했습니다. 그런데 이런 경우 답이 틀렸다고 나옵니다.오히려, fill을 이용한 별도의 초기화 없이 기본적은 0으로 상태를 두면 맞다고 나옵니다.제가 어떤 점을 잘못 생각한건가요?감사합니다.소스코드 : http://boj.kr/aaa7dca582ec4827803e5b5826b6cdb5
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - O : 17406 질문 있습니다
구현하고 예제 및 반례를 넣어보고 디버깅도 나름 해봤는데 도저히 틀린 점을 못 찾겠습니다. 강의와 접근 방식이 조금 다르지만 비슷한 것 같은데 어떤 점에서 틀린 건지 알려주시면 감사할 것 같습니다 ㅠㅠ#include <bits/stdc++.h> using namespace std; int N, M, K, mp[51][51], temp_mp[51][51], ret=INT_MAX; vector<vector<int>> v; vector<int> choose_v; int visitied[10]={0,}; int dy[4]={1,0,-1,0}, dx[4]={0,1,0,-1}; void rotate(int y,int x,int sz){ for (int i=1;i<=sz;i++){ int start_y=y-i; int start_x=x-i; int start_val=temp_mp[start_y][start_x]; int temp_y=start_y; int temp_x=start_x; for (int j=0;j<4;j++){ int rotate_flag=i*2; while(rotate_flag--){ // printf("%d,%d ",temp_y,temp_x); temp_mp[temp_y][temp_x]=temp_mp[temp_y+dy[j]][temp_x+dx[j]]; temp_y+=dy[j]; temp_x+=dx[j]; } //printf("\n"); } temp_mp[start_y][start_x+1]=start_val; } } void choose(int sz,vector<int> &_choose_v){ // printf("sz: %d\n",sz); // for (int&i:_choose_v){ // printf("%d ",i); // } // printf("\n"); // printf("%d %d\n",visitied[0],visitied[1]); if (sz==K){ for (int i=1;i<=N;i++){ for (int j=1;j<=M;j++){ temp_mp[i][j]=mp[i][j]; } } for (int i=0;i<10;i++){ visitied[i]=0; } for (int&i:_choose_v){ rotate(v[i][0],v[i][1],v[i][2]); for (int j=1;j<=N;j++){ int sum=0; for (int k=1;k<=M;k++){ sum+=temp_mp[j][k]; } if (sum<ret){ ret=sum; } } } //printf("\n"); return; } for (int i=0;i<K;i++){ if (find(_choose_v.begin(),_choose_v.end(),i)==_choose_v.end()){ _choose_v.push_back(i); visitied[i]=1; choose(sz+1,_choose_v); visitied[i]=0; _choose_v.pop_back(); } } } int main() { cin >> N >> M >> K; for (int i=1;i<N+1;i++){ for (int j=1;j<M+1;j++){ cin >> mp[i][j]; } } for (int i=0;i<K;i++){ vector<int> temp_v; for (int j=0;j<3;j++){ int temp; cin >> temp; temp_v.push_back(temp); } v.push_back(temp_v); } choose(0,choose_v); // for (int i=1;i<N+1;i++){ // for (int j=1;j<M+1;j++){ // printf("%d ",temp_mp[i][j]); // } // printf("\n"); // } cout << ret; }choose()함수를 통해 순열을 만들고 choose()의 인자인 sz가 K가 되면, 순열의 순서에 맞게 rotate한 후 최솟값을 찾을 수 있도록 작성했습니다.