반년넘게 C#해도 이해라는게 도저히 안갔는데
미해결
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
C++하니까 스택이고 힙이고 참조고 이해가 됩니다 진짜 왜 C#을 먼저했을까요? 감사합니다
- c++
- 네트워크
- ue-blueprint
- 게임수학
- windows-api
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
C++하니까 스택이고 힙이고 참조고 이해가 됩니다 진짜 왜 C#을 먼저했을까요? 감사합니다
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
http://boj.kr/f816b7f59d3247c7958683ceae5d6b76 선생님 안녕하세요. 모든 경우의 수 마다 구역을 색칠해서 dfs가 2번호출되면 최솟값을 갱신하는 로직으로 짰습니다. 테스트케이스는 다맞는데 왜 틀리는지 이유를 모르겠습니다.
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
if(mp.find(1) == mp.end()) 이런 반복문 조건이 나오는데요 mp[1]을 할당하지 않기 위해서 이렇게 조건을 쓰신것 같은데요 조건식같은경우는 일단 할당된것이 하나밖에 없으니깐 처음과 끝이같다 그래서 참이다가 맞나요?그런데 그렇게되면 할당을 한것이랑 똑같지 않나요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
cout << mp[1] << '\n'; cout << mp2["aaa"] << '\n'; 이 코드에서요 위의 코드는 key에 1 값에 0을 저장하는 것은 알겠습니다.그리고 두번째 코드에서도 key에 aaa까지는 알겠는데 코드 실행결과를 보면 값이 %가 나와있습니다. 왜 그렇게 값이 나오는건가요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
mp.erase("kundol"); auto it = mp.find("kundol"); if(it == mp.end()){ cout << "못찾겠네 꾀꼬리\n"; } 이 코드결과 "못찾겠네 꾀꼬리"가 실행이 되는데요 제 생각에는 kundol을 erase 했으니 mp에 find를 실행하면 kundol이 없으니깐 0을 반환해서 it이 0이되고 그리고 mp.end는 지금 key값이 3개가 있으니 인덱스값이 2가되서 if반복문이 실행이 안되야하는거 아닌가요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
auto it = a.begin(); it++; a.insert(it, 1000); print(a); it = a.begin(); it++; a.erase(it); print(a); 강의교재를 보시면 이러한 코드가 나오는데요 저 코드를 실행한 결과는 3 1000 2 1 1 2 3 3 2 1 1 2 3 이렇게 나오는데 결론적으로 1000이 사라졌습니다.하지만 제가 생각하기에 첫번째 auto it 에서 it++때문에 it= a.begin() +1이 되고 4번째 코드에서는 원래에 있던 it에 다시 it++를 하니 it = a.begin() + 2가 되는것이 아닌가요? 그래서 3 1000 2 1 1 2 3 여기에서 처음에 나오는 2를 삭제해야하는것이 아닌가요?
미해결
Do it! 알고리즘 코딩테스트 with C++
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int N; cin >> N; vector<int> save(N + 1 , 0); for (int i = 1; i <= N; i++) { cin >> save[i]; } sort(save.begin(), save.end()); int result = 0; for (int k = 1; k <= N; k++) { int s = 1; int e = N; while (s < e && s >= 1 && e <= N) { int temp = save[s] + save[e]; if (temp < save[k]) { s++; } else if (temp > save[k]) { e--; } else { //만약 s와 e가 k와 같아지면 안됨 if (s != k && e != k) { result++; break; } else if (s == k) s++; else if (e == k) e--; } } } cout << result << "\n"; } 제가 다음과 같이 돌렸을 때 틀렸습니다라고 나오는데, 벡터에 저장할 때 0부터 저장하면 정답이라고 나오는 이유를 모르겠습니다
해결됨
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
hash_map 같은 경우 그럼 큰 공간을 미리 할당해 놓고 할당된 공간 안에 key값을 기준으로 value 값을 채워 넣어 준다.그럼 예를 들면 map.reserve(100);과 같은 개념일까요??메모리를 희생하여 CPU 연산 속도를 올린다는 의미가 reserve : 큰 공간을 미리 할당(메모리 희생) 이사비용 감소 (미리 큰 공간을 할당하여 사용하므로 new ...() 과 같은 동작을 안해도 되므로) -> CPU 연산 속도 증가? 이러한 의미로 이해했는데 제가 이해한바가 맞는지가 궁금합니다. key값을 알면 빠르게 찾을 수 있다. -> map은 이진 탐색 O(logN)으로 찾지만, hash_map은 hm[key] O(1) -> m[key]도 가능하지 않나요? 그럼 map도 키 값을 알면 O(1) 즉 빠르게 찾을 수 있게 되는 건가요? hash 기법을 이용해서 key값을 추출하는 이유가 보안 때문인건가요?메모리를 늘릴 수 록 성능이 좋아지는 의미가 키 값이 겹쳐질 확률이 적어져서 성능이 좋아지는 건가요? -> 키 값이 겹치면 빈 공간을 찾아 가야하니
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
vector v3[10]; 2차열 배열을 만드는 방법중에서 위와같은 코드로 2차열배열을 만들수 있다고 하셨습니다. 밑의 그림도 참고를 해봤는데 이해가 가지않습니다.V3[10]을 하게 되면 1차원에 10개의 공간만 생기는것이 아닌가요??
해결됨
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1012번 문제 이전에 dfs. bfs 강의 부분에서 제가 기억하기로는 ret++; dfs(i, j); 이렇게 써서 제출 후 정답은 맞았습니다만... 이 두 코드의 위치가 바뀌어도 상관없는 걸로 아는데 제가 알고 있는 것이 맞나요? 아니면 혹시 코테 볼 때는 dfs(i, j); ret++; 이렇게 해야만 하나요???
미해결
[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
안녕하세요 좋은 강의 잘 듣고있습니다. 몇가지 질문이 있어 문의드립니다. 데코레이터로 감싸진 함수 호출 강의를 다볼때쯤 되어 코드를 보니 blog_abtest.py와 blog.py 에서 데코레이터로 감싸진 함수들의 호출은 @login_manager.user_loader -> 해당 데코레이터 부분에서 된다고 보면 될까요?? 수업시간에 말씀해주셨을텐데 제가 잘 이해를 못한것 같네요... 예를들어, 아래 이미지의 함수들의 경우 선언과 동시에 호출을 하는 것일까요? 2. C++, C#으로 구현된 서비스 SDK와의 연계 제가 타전공으로서 웹은 처음으로 강사님을 통해 배우고 있는데 실무에서 C++ 혹은 C#으로 구현된 SDK에서 제공하는 '지도(map)'을 가시화하는 웹서버를 개발해야 됩니다. 본 강의에서 학습한 FLASK에 해당 SDK를 연동해서 홈페이지에서 지도를 불러올 방법이 있을까요?? 마지막으로, 정부쪽 웹개발은 FLASK를 사용하지 못하나요?? 국가 과제를 수행하고 있는데 정부에서 쓰는 웹 프레임워크가 따로 있다고 들었습니다.(자바와 유사한 전자정부~) 국가기관에 웹서비스를 배포하고자 할때는 파이썬 기반의 FLASK를 사용하지는 못할까요??
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1.v.erase(v.begin(), v.begin() + 3); 강의교재를 보시면 위의 코드가 나오는데요 저 코드를 실행한 결과 1~9까지의 숫자중에서 1~3까지의 숫자가 사라졌는데요 제가 해석한 바로는 앞의 begin을 으로 부터 +3이니깐 주소가 3칸 옮겨간거고 그리고 범위가 ()이므로 원래는 1~4이지만 4를 제외하고 1~3만 제거가 되는건가요? 2.auto a = find(v.begin(), v.end(), 100); 같은 페이지에 있는 코드입니다.100을 찾아서 인덱스값을 a에 넣어야할것같은데요 9보다 그니깐 인덱스 값은 6이 되어야 하는것이아닌가요>?
미해결
[게임 프로그래머 도약반] DirectX11 입문
항상 화면에서 보이는것은 원점을 기준으로 z축방향을 바라보고있기떄문에 사실상 카메라라는것은 존재하지않고 모든 물체에다가 뷰변환을 적용시켜서 , 카메라를 움직이는게 아닌 물체를 원점으로 끌고와서 그려주는것이 맞는건가요 ?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
go(here + 1); a[here] = ~a[here]; go(here + 1); go함수 내에서 강사님이 하신대로 위와 같이 호출하면 기저사례에 8가지 경우의 수(3행기준)가 모두 나온다는 것을 재귀함수 트리를 그려서 확인을 했을뿐 이해가 가지 않습니다.. go(here + 1); a[here] = ~a[here]; go(here + 1); a[here] = ~a[here]; //원복 뒤집고 go함수 호출하고 그 함수가 종료되고 다시 돌아왔을 때 바뀐 배열을 다시 뒤집는 과정이 있어야 함수가 똑바로 작동할거라고 계속 생각하게 되네요. 예를 들어, {4,5,1}이 있을 때 , go(1)이 호출되고 첫번째 go(2)함수가 진행되다가 함수가 종료되어서 다시 go(1)로 돌아왔을 때, {4,5,1}이 되어있어야 기저사례에서 8가지 경우가 제대로 나올텐데 왜 원복 코드없이도 8가지가 제대로 나오는지 이해가 안됩니다!!!!!!!!!
미해결
홍정모의 따라하며 배우는 C++
const string& getValue() const 이부분에서 함수 이름 뒤에 위치한 const는 getValue함수 내부에서 멤버 변수의 값을 변경하지 않겠다는 의미인것은 이해 할 수 있습니다. 하지만 함수이름 앞에 const string& 은 잘 이해가 가지 않습니다. string타입의 멤버 변수의 주소를 변경하지 않겟다라는 의미 인가요?
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
cout << lower_bound(a.begin(), a.end(), 3) - a.begin() << "\n"; 페이지 중간을 보시면 이러한 코드가 나와있는데요 밑에 페이지에 있는 설명을 읽어보니 주소값의 차이가 2이기 때문에 2가나온다고 설명이 되어있습니다. 그리고 p85를 보면 cout << &*lower_bound(a.begin(), a.end(), 3)<< "\n";이러한 코드가 나와있는데요 이 코드는 주소값을 반환하는것으로 나와있는데 맨 첫번째코드도 주소값을 반환하는것으로 알고있습니다. 두 코드의 차이는 &*가 붙어있다는뜻인데 &*기호가 붙어있어도 똑같이 주소를 나타낸다는 코드인가요?하지만 맨 처음 코드에서 -a.begin()을 해주고 나서 코드를 실행해보니깐 오류가 뜹니다..어떻게 해야할까요?
해결됨
C개발자를 위한 최소한의 C++
안녕하세요. 강의 잘 보고 있습니다. 실습 중 궁금한 것이 있어서 질문 남깁니다. CMyStringEx::onSetData 함수 내용입니다. void CMyStringEx::onSetData(const char*& param) { CMyString::onSetData(param); // 생략 if (param != nullptr) { if (strcmp(param, "멍멍이아들") == 0) { // delete [] param; param = "우리귀요미"; } } } param이 가리키고 있는 곳의 데이터가 "멍멍이아들" 문자열이면 "우리귀요미"라는 새 문자열이 담긴 주소로 바꿔주기 전에 기존 param이 가리키고 있는 곳을 delete 해줘야 메모리 누수가 발생하지 않을 것 같은데 맞나요? 만약 1번이 맞아서 delete를 한다면 CMyString::~CMyString() 소멸자가 호출될 때 문제가 발생할 것 같은데 이를 어떻게 해결하면 될까요?
해결됨
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
결국 이 문제에서 구하는 것은 " 잠기지 않은 구역의 수" 이기 때문에, 입력을 받으면서 입력받은 지역 중 최대 높이를 구해서 100까지 for을 돌리지 않고 최대 높이 까지만 for을 돌려도 되지 않나요? 100까지 돌리신 이유가 궁금합니다!! 제가 작성한 코드 첨부 드립니다! #include <bits/stdc++.h> using namespace std; const int n_max = 101; int dy[4] = {-1, 0, 1, 0}; int dx[4] = {0, 1, 0, -1}; int m,a[n_max][n_max],visited[n_max][n_max]; int ret = 1; // #2648: 안전 영역 // 메모 : DFS 깊이 우선선 탐색 -> component 찾기기 void dfs(int y, int x, int d) { visited[y][x] = 1; for(int i = 0; i < 4; i++) { int ny,nx; ny = y + dy[i]; nx = x + dx[i]; if(ny >= m || ny < 0 || nx >= m || ny < 0) continue; if(a[ny][nx] > d && !visited[ny][nx]) { dfs(ny, nx,d); } } } int main() { int maxHigh = 0; //비가 오지 않을 경우도 고려려 cin.tie(NULL); cout.tie(NULL); vector<int> results; //Input //1. 배열의 크기 cin >> m; //2. 2차원 배열 입력 받기 for(int i = 0; i < m ; i++) { for(int j = 0; j < m ; j++) { cin >> a[i][j]; maxHigh = a[i][j] > maxHigh ? a[i][j] : maxHigh; } } // 최대 높이 많큼 비가 왔을 때 부터 기준치를 낮춰가며 안전구역개수의 최대 지점을 구함 for(int d = 1; d <= maxHigh; d++) { //배열 초기화 fill(&visited[0][0], &visited[0][0] + n_max * n_max , 0); int cnt = 0; for(int i = 0; i < m; i++){ for(int j = 0; j < m; j++){ if(a[i][j] > d && visited[i][j] == 0) { cnt++; dfs(i,j,d); } } } //안전영역 최대 개수 갱신 ret = max(ret,cnt); } // 디버깅 /*for(int i = 0; i < m; i++){ for(int j = 0; j < m; j++){ cout << a[i][j] << ' '; } cout << '\n'; } */ cout << ret << '\n'; return 0; }
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
해설 중 예제에서 질투심이 3일 때가 답이 되는 것은 이해했습니다만, 질투심이 4일 때 학생 수 5명을 충족시키지 못해 안 된다고 하셨는데, 문제 조건에 보석을 못 받는 학생이 있을 수도 있다고 나와 있어서 정답은 아닐지언정, 조건을 만족하는 케이스가 아닌가 싶습니다.
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
unique() 함수를 설명하실때요 cout << it -v.begin() << '\n';를 쓰셨는데요 여기에서 왜 it-v.begin()이라고 써주신건가요? 그냥 it만 들어가도 되는거아닌가요? it가 이터레이터를 반환한다고 했는데 그럼 it가 5가 되는거 아닌가요? 코드 줄을 바꿀때 어떨때는 '\n'을 쓰시고 어떨때는 "\n"을 쓰시고 또 어떨때는 " " 을 쓰시던데 차이가 있을까요? 그리고 v.erase(unique(v.begin(), v.end()), v.end());를 했는데 왜 뒤에 있는 숫자를 지워주는 코드가 되는것인가요?v.end()는 무엇을 기준으로 하는것인가요?