inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

3-H next > MAX라고 하면 틀리는 이유

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/21fd549ee17c48b9be877802112b7a91 if문에서 next > MAX라고 하면 틀리네요 next >= MAX라고 하면 맞구요 왜 그런걸까요 그리고 v.push_back(i) 할 때 1, 2, 3 이렇게 넣으면 1 , 2, 3 순서대로 들어가는게 아니라 3, 2, 1 이렇게 되네요 처음 알았습니다

  • c++
  • 코딩-테스트
조현성 댓글 1 좋아요 0 조회수 252

class와 메모리 추가질문

해결됨

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

강사님의 정성스러운 답변 너무너무 감사합니다 그런데 답변읽고 이해가 잘 안가서 하나만 더 질문드립니다 ㅠㅠ (저) 호출되고 난 후에도 멤버함수는 Code영역에, 멤버변수는 Stack영역을 차지한다고 배웠습니다 = (강사님) class 내부를 보면 데이터(=멤버변수)와 로직(함수)로 이루어져 있는데, 이 데이터가 생성 위치에 따라 Heap/Stack으로 올라가게 되며, 로직은 무!조!건! Code 영역에 박혀 있습니다. 이게 제것을 읽어보고 강사님것을 읽어봐도 같아보이는데 제가 어떤말을 틀리게 했는지 알려주실수 있나요 멤버함수는 Code영역에 = 로직은 Code 영역에 박혀있다 똑같은 말처럼 보여서요 함수가 곧 로직이고 로직이 곧 함수 아닌가요? (이해못해서 죄송합니다 불쌍히 봐주세요 ㅠㅠㅋ;;) ps) 강사님 덕분에 메모리의 이해가 실력을 좌우한다는것을 실감하는 중입니다 메모리를 알게되니까 포인터와 참조가 너무 쉽게 느껴지네요 지금까지 공부한것을 다 포함해도 강사님 강의 한번보는것보다 못하네요 정말 최고입니다 감사드립니다!

  • c++
댓글 1 좋아요 0 조회수 312

3-D q에 fire 거리 부분

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

fire_check[ny][nx]!=INF면 continue잖아요 ny nx에 값(!INF인값)이 이미 존재하는데 불이 여러개라 fire_check[ny][nx]>fire_check[y][x]+1 인 경우의수는 생길 수 있는데 bfs라 이럴 경우가 안생겨서 굳이 비교 할 필요 없게되나요? 질문이 좀 그런가요 ㅠㅠ

  • c++
  • 코딩-테스트
조현성 댓글 2 좋아요 0 조회수 315

class와 메모리

해결됨

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

우선 강사님 덕분에 메모리를 제대로 배우고 있습니다 항상 감사할 따름입니다 강사님만큼 메모리를 정확하고 이해하기 쉽게 설명하시는 분은 없는거 같습니다 다시한번 감사합니다 -본론- 메모리는 Code, Data, Heap, Stack 영역으로 나누어 진다고 배웠습니다 강의중 드디어 class가 나왔는데 class와 메모리에 대해 너무 이해안가는 부분이 하나 있어서 이렇게 질문드리게 되었습니다 바로 Code영역인데요 class가 호출되기 전에는 Code영역에 있다가 호출되고 난 후에도 멤버함수는 Code영역에, 멤버변수는 Stack영역을 차지한다고 배웠습니다 (제가 여기까지는 잘 이해했나 모르겠네요..) 그렇다면 여기서 한가지 드는 의문이 바로 Code영역은 무한인가요?? 만약에 정말 말도 안될만큼의 엄~~~~~~~청나게 많은 함수들을 class안에 작성했다고 가정했다고하면 Code영역에도 한계가 있어야되는거 아닌가요 아무리 찾아봐도 그저 "Code영역은 충분합니다" 라는 얼렁뚱땅한 답변만 있을뿐(강사님 말고 다른사람들) 아무도 "왜 충분한가"를 정확히 알려주는 곳이 없네요.. 이 의문이 너무 해결이 안됩니다 ㅠㅠ 꼭 알려주셨으면 좋겠습니다

  • c++
댓글 1 좋아요 0 조회수 351

i==k일떄 i++안해도되지않나요

미해결

Do it! 알고리즘 코딩테스트 with C++

i==k인 경우는 a[i]에 1을 더하더라도 큰 값이 나올텐데 i를 오른쪾으로 옮겨버리면 사실상 a[k]보다 더 큰 값만 나오는거 아닌가요?

  • c++
  • 코딩-테스트
  • 알고리즘
박준형 댓글 1 좋아요 0 조회수 456

포인터 자체의 주소 vs 포인터가 가리키는 주소

미해결

홍정모의 따라하며 배우는 C++

#include <iostream> using namespace std; int main() { int array[5] = { 1, 2, 3, 4, 5 }; int *ptr = array; // ptr 자체의 주소는 다름, 그러나 array의 첫번째 요소를 가리킴! cout << "ptr: " << ptr << endl; // 포인터가 가리키는 주소 == array 첫번째 요소 주소 cout << "&ptr: " << &ptr << endl; // ptr 자체의 주소 (array랑 다름) cout << "array: " << array << endl; cout << "sizeof(ptr): " << sizeof(ptr) << endl; // pointer 자체의 사이즈 cout << "sizeof(ptr): " << sizeof(&ptr) << endl; // 마찬가지 return 0; } 제 질문은 ptr을 출력했을때는 포인터가 가리키는 주소, 즉 array의 주소를 반환하면서, 왜 sizeof(ptr)에서는 &ptr을 하지 않았는데도 pointer 자체의 주소에 대한 size를 반환하나요?? 앞선 논리처럼 array 첫번째 요소,[0]에 대한 size를 반환해야하는 것 아닌가요? 감사합니다.

  • c++
의지 댓글 1 좋아요 1 조회수 346

IntArray 클래스 변수인 int_array의 소멸자가 왜 호출되는건가요?

미해결

홍정모의 따라하며 배우는 C++

#include <iostream> #include <cassert> #include <initializer_list> using namespace std; class IntArray { private: unsigned m_length = 0; int* m_data = nullptr; public: IntArray(unsigned length) :m_length(length) { m_data = new int[length]; } // initializer_list have not support [ ] operator. IntArray(const std::initializer_list<int>& list) : IntArray(list.size()) { int count = 0; for (auto& element : list) { m_data[count] = element; ++count; } //for (unsigned count = 0; cout < list.size(); ++count) // m_data[count] = list[count]; // error } ~IntArray() { delete[] this->m_data; } // TODO : overload operator = /*IntArray& operator = (const IntArray& arr) { if (this == &arr) return *this; delete[] m_data; m_length = arr.m_length; if (arr.m_data != nullptr) { m_data = new int[m_length]; for (unsigned i = 0; i < m_length; ++i) m_data[i] = arr.m_data[i]; } else m_data = nullptr; return *this; }*/ friend ostream& operator << (ostream& out, IntArray& arr) { for (unsigned i = 0; i < arr.m_length; ++i) out << arr.m_data[i] << " "; out << endl; return out; } }; int main() { int my_arr1[5] = { 1,2,3,4,5 }; int* my_arr2 = new int[5] {1, 2, 3, 4, 5}; auto il = { 10,20,30 }; IntArray int_array{ 1,2,3,4,5 }; cout << int_array << endl; int_array = il; cout << int_array << endl; return 0; } 질문글이 좀 지저분해서 먼저 죄송합니다. 대입 연산자 오버로딩을 하지 않을 경우에, int_array = il; 대입 연산에서 에러가 나길래, 디버그를 해보니까 int_array 의 소멸자가 호출되어서 메모리공간이 그대로 없어지더라고요.. 그런데 제 개념상으로는 int_array 변수가 main 함수의 local 변수인데, 아직 프로그램이 끝나지않았는데도 왜 소멸자가 호출되는건가요?

  • c++
Yookpo 댓글 1 좋아요 1 조회수 248

1-M 질문드립니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

공유 소스 보기 (acmicpc.net) cin.tie()와 cout.tie, ios_base::sync~ 구문이 시간을 단축시키기 위함인건 알겠는데 어떤 문제에는 cin.tie와 cout.tie 둘다 쓰이는 반면에 이문제에는 cin.tie만 쓰였는데 어떤 차이가 있는지 궁금합니다 질문글 읽어주셔서 감사합니다!

  • c++
  • 코딩-테스트
태욱 댓글 2 좋아요 0 조회수 338

1-K 문제 질문 드립니다!

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요, 큰돌 선생님! 강의 너무 즐겁게 잘 공부하고 있습니다! :) 테스트 케이스 및 몇 가지 더 테스트 넣어봤을 때는 잘 동작하는데, 틀렸다고 나오네요 ㅠㅠ 어디서 문제가 있는지 여쭤봐도 괜찮겠습니까?😭 메인 로직은, 1) 카운팅 배열에 담는다 2) 배열을 순회하며 존재하는 문자개수의 1/2만큼 ret에 더한다 (이때 홀수 개수인 문자가 2개 이상인 경우 문자열 출력 후 종료) 3) 순회 종료 후 홀수 문자와 ret을 뒤집은 temp를 ret에 더한 후 출력한다 입니다!!ㅠ http://boj.kr/e839c8c8845748e0850331f8961d45eb

  • c++
  • 코딩-테스트
서요한 댓글 2 좋아요 0 조회수 289

최하위 켜져있는 비트 찾기 질문드립니다!

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 ! 최하위 켜져있는 비트 찾기 질문드립니다! 20을 예시로 아래와 같이하면 3이 나와야하는거아닌가요..? #include <iostream> using namespace std; int main() { int s = 20; // 10100(20) int idx = (s & -s); cout <<idx; // 4 }

  • c++
  • 코딩-테스트
박효성 댓글 2 좋아요 0 조회수 278

2-T 이렇게 풀면 왜 틀릴까요?

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/f28c6d421faf48ecb8e54be17eaf1cd5 테케는 통과되는데 ㅎㅎ;; r,s,t 비슷하게 푸는데 다 틀리네요 하하;;

  • c++
  • 코딩-테스트
조현성 댓글 2 좋아요 0 조회수 316

2-S 비슷하게 했는데 안되서 질문드립니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/c12fb379e72a4bac8f5560898b40d140 안녕하세요 선생님 dfs(i)를 dp[i]로 안받고 바로 내보내면 mx가 1로 고정되어서 나오는데 이렇게 하면 안되나요?

  • c++
  • 코딩-테스트
조현성 댓글 1 좋아요 0 조회수 261

테케는 통과하는데 왜 틀렸을까요

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

#include<iostream> #include<vector> using namespace std; int n,d,p,root,visited[54]; vector<int>adj[54]; int dfs(int here){ visited[here]=1; int ret=0; if(adj[here].size()==0)return 1; for(int there:adj[here]){ if(visited[there])continue; ret+=dfs(there); } return ret; } int main(){ cin >> n; for(int i=0;i<n;i++){ cin >> p; if(p==-1){ root=i; continue; } adj[p].push_back(i); } cin >> d; if(d==root)cout<<0<<"\n"; else{ visited[d]=1; cout << dfs(root) << "\n"; } }

  • c++
  • 코딩-테스트
조현성 댓글 2 좋아요 0 조회수 352

DirectX 3D에 대해 질문이 있습니다

해결됨

[게임 프로그래머 도약반] DirectX11 입문

DX 3D를 배우면서 원초적으로 궁금한점이 생겼는데 저희는 지금 Vertex를 표현할때 x, y, z좌표를 사용해 도형을 표현해주는데 x, y 좌표는 모니터의 x, y 픽셀과 대응되기 때문에 자연스럽게 렌더링 시킬수 있다고하지만 z좌표는 도대체 어떻게 렌더링이 되는 건가요? 이건 DX 파이프라인에서 알아서 설정해주는 건가요? 입력되는 데이터에 z좌표 하나를 추가로 넣어주는것 외에는 아무것도 하지 않았는데 어떻게 도형이 3D처럼 렝더링시킬 수 있는건가요?

  • c++
  • directx
김도형 댓글 1 좋아요 0 조회수 424

제꺼는 return ret 뒤에 조금 다르게 나옵니다

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

(포인터 실습. 14분 38초) 비주얼 스튜디오 2022, x86에서 디스어셈블리 확인했습니다 ret.hp = 100; 000A245E 8B 45 08 mov eax,dword ptr [ret] 000A2461 C7 00 64 00 00 00 mov dword ptr [eax],64h ret.attack = 10; 000A2467 8B 45 08 mov eax,dword ptr [ret] 000A246A C7 40 04 0A 00 00 00 mov dword ptr [eax+4],0Ah ret.defence = 2; 000A2471 8B 45 08 mov eax,dword ptr [ret] 000A2474 C7 40 08 02 00 00 00 mov dword ptr [eax+8],2 return ret; 000A247B 8B 45 08 mov eax,dword ptr [ret] } 000A247E 52 push edx 000A247F 8B CD mov ecx,ebp 000A2481 50 push eax 000A2482 8D 15 A4 24 0A 00 lea edx,ds:[0A24A4h] 000A2488 E8 A3 ED FF FF call @_RTC_CheckStackVars@8 (0A1230h) 000A248D 58 pop eax 000A248E 5A pop edx 000A248F 5F pop edi 000A2490 5E pop esi 000A2491 5B pop ebx 000A2492 81 C4 D4 00 00 00 add esp,0D4h 000A2498 3B EC cmp ebp,esp 000A249A E8 F5 ED FF FF call __RTC_CheckEsp (0A1294h) 000A249F 8B E5 mov esp,ebp 000A24A1 5D pop ebp 000A24A2 C3 ret return ret; 000A247B 8B 45 08 mov eax,dword ptr [ret] ret 뒤에 이렇게 한줄 나오고 없어요 어떻게 해석해야할까요??

  • c++
JM 댓글 1 좋아요 0 조회수 396

3-E 재귀함수로 풀기

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/4538dc44889e45e0ba2c3468c92fca3f 큰돌님, 안녕하세요! 다름이 아니라 재귀함수를 사용하여 문제를 풀었습니다. n의 개수 만큼 인덱스를 추가해주고(vector v에), 이 벡터 v를 재귀함수에서 '값에 의한 호출'로 사용합니다. 그러면 재귀함수를 반복할 때마다 선언 및 sort할 필요없이 이 벡터 v를 인수로 넘겨줍니다. 그럼 재귀함수마다 6가지 경우의 수를 검사하게 되고, 시간복잡도를 우려하여 백트래킹을 하기 위해 'if(s + 1 < ret)'을 통해 불필요한 과정은 생략하였습니다. 이렇게 하고 제출해보니, 성공이라고 떴습니다. 이 방법도 틀리지는 않은 걸까요?

  • c++
  • 코딩-테스트
마은아 댓글 1 좋아요 0 조회수 321

3K 메모리초과

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

https://www.acmicpc.net/source/67173085 강의와 비슷하게 작성도 해보았지만 메모리 초과를 받습니다. 어느 부분을 수정해야 할지 감이 안잡혀서 질문남겨요!.

  • c++
  • 코딩-테스트
riverrevir 댓글 1 좋아요 0 조회수 239

6-L 문제 질문

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌 선생님 좋은강의 감사합니다 강의를 보다가 의문점이 드는부분이 있습니다. 3 9.9 0.1 2 를 입력하면 2.000을 출력하는데, 9.9를 출력해야하는것 아닌가요? 가장 첫번째 인덱스에 아무것도 곱하지 않은게 클 경우를 체크안하는 로직이 아닌지 궁금합니다!

  • c++
  • 코딩-테스트
이명운 댓글 1 좋아요 0 조회수 207

인기 태그

인프런 TOP Writers

주간 인기글