묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C++
MinGW installation manager를 어디서 열어야 하나요?
안녕하세요! 선생님 말씀하신 옵션으로 코드블럭스를 설치했는데, MinGW installation manager를 어떻게 열어야하는지 모르겠습니다.. 당장은 visual studio로 공부하겠지만, 차후에 학교 과제를 할 때 code blocks도 많이 이용된다고 해서 gdb를 설치해두고 싶은데, installation manager를 어디서 열어야 하나요??
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
질문입니다.
혹시 n이 주어지면 n번째 위치한 숫자를 반환하려면 어떻게 해야될까요?
-
미해결홍정모의 따라하며 배우는 C++
정적 바인딩과 동적 바인딩 차이가 이해가 안됩니다.
교수님 저도 이 강의에서 13일전에 나왔던 질문자와 같은 질문이 있습니다."두 코드를 비교하시면서 동적, 정적 바인딩의 차이를 설명해주셨는데, 결국 result나 func_ptr 모두 런타임에서 op값이 무엇이냐에 따라서 결정되는 것 아닌가요?"이런질문이 있었는데 강의가 어느부분인지 표기해서 올리라고 하신 답글을 달아주셨네요.여기에 덧붙여서 좀더 디테일하게 질문을 하자면, 결국 op를 cin으로 런타임에 받아서 그 op에 따른 케이스에따라 result 나 func_ptr이나 모두 결정되는 것이 아닌가합니다. 그래서 cout << result << endl;이나 cout << func_ptr(x,y) << endl; 이나 동일하게 런타임에 입력하는 op값에 따라 결정되는 것이 아닌가 생각합니다.그래서 차이를 잘 모르겠습니다. 강의는 12.5 동적바인딩과 정적바인딩이고 1분15초쯤입니다.교수님께서 질문을 하면 고민 더 해보라고 하시는 답글을 매번 해주시는 것 같아서 질문 전에 자료도 찾아보고 고민해봤는데 이 예제에서의 정적바인딩 동적바인딩 차이를 가늠하기가 좀 어렵네요찾아보면 대부분이 예제를 int a = 0 이런걸 정적바인딩으로 설명해서 이미 컴파일타임에 a가 결정되는 이런걸 정적바인딩이라고 설명을 해놓아서 더욱 헷갈리는 것 같습니다.교수님의 보다 자세한 의견을 듣고싶습니다.
-
미해결홍정모의 따라하며 배우는 C++
6.3 배열과 반복문
안녕하세요 교수님, 11분 40초에 < 부호에 <=로 바꾸면 run time error가 난다는 게 무슨 뜻인가요? 프로그램 상 작동은 아웃풋 값은 똑같이 작동이 되길래 궁금해서 질문 올립니다. 감사합니다!
-
미해결홍정모의 따라하며 배우는 C++
m_i 값이 안바뀌는 이유가 뭔가요?
// // main.cpp // inheritance_ex01 // // Created by Kevin on 04/10/2019. // Copyright © 2019 Kevin. All rights reserved. // #include <iostream> using namespace std; class Mother { // basic class private: int m_i; public: //Mother() {} Mother(const int& i_in) : m_i(i_in) { std::cout << "Mother constructor" << std::endl; std::cout << "m_i " << m_i << std::endl; } void setValue(const int& i_in) { std::cout << "i_in " << i_in << std::endl; m_i = i_in; std::cout << "m_i " << m_i << std::endl; } int getValue() { return m_i; } }; class Child : public Mother { private: double m_d; public: Child(const int& i_in, const double& d_in) : Mother(i_in), m_d(d_in) { std::cout << "Child constructor" << std::endl; Mother::setValue(i_in); } void setValue(const int& i_in, const double& d_in) { } void setValue(const double& d_in) { m_d = d_in; } double getValue() { return m_d; } }; // derived class int main(int argc, const char * argv[]) { Mother mother(512); std::cout << mother.getValue() << std::endl; Child child(1024, 2048); std::cout << "m_i value : " << mother.getValue() << std::endl; // 왜 512인가요? std::cout << "m_d value : " << child.getValue() << std::endl; return 0; }
-
해결됨홍정모의 따라하며 배우는 C++
상속 질문 있습니다
class Base { public: int x; }; class Derived : Base { }; 상속받은 Derived옆에 Base의 접근지정자를 쓰지 않으면 private으로 접근지정자가 들어가는건가요? 접근지정자를 쓰지않아도 오류가 뜨지않는걸 보니 자동으로 뭔가가 들어가는거 같아요
-
해결됨홍정모의 따라하며 배우는 C++
10.06 컨테이너 클래스 질문있습니답
안녕하세요 교수님 첫질문입니다ㅎㅎ reset(), resize(), insertBefore(const int& value, const int& ix), remove(const int& ix), push_back(const int & value) 이렇게 함수 제목을 정해 주셨는데 resize()에서 input이 없이 구현이 가능해서 알려주신것 같은데 어떻게 input없이 resize를 할수 있는지 궁금합니다... 아래 코드는 제가 만든 함수코드 입니다 //컨테이너 클래스 //다른 클래스들을 담는 클래스 #include <iostream> #include <initializer_list> using namespace std; class IntArray { private: int m_length = 0; int* m_data = nullptr; public: IntArray(const int& length) : m_length(length) { m_data = new int[length]; } IntArray(const std::initializer_list<int> &arr) :IntArray(arr.size()) { int count = 0; for (auto & e : arr) { m_data[count] = e; ++count; } } ~IntArray() { delete[] m_data; } void reset() { delete[] m_data; } void resize(const int & rsize) { //이부분이 궁금합니다!!! m_length = rsize; int* temp = new int[rsize]; memcpy(temp, m_data, sizeof(int) * m_length); reset(); m_data = temp; } void insertBefore(const int& value, const int& ix) { resize(m_length + 1); for (int i = m_length-2; i > ix-1; --i) m_data[i + 1] = m_data[i]; m_data[ix] = value; } void remove(const int& ix) { for (int i = ix + 1; i < m_length; i++) m_data[i - 1] = m_data[i]; resize(m_length - 1); } void push_back(const int & value) { resize(m_length + 1); m_data[m_length-1] = value; } friend ostream& operator << (ostream& out, IntArray& arr) { for (unsigned i = 0; i < arr.m_length; i++) out << arr.m_data[i] << " "; return out; } }; int main() { IntArray my_arr{ 1,3,5,7,9 }; cout << my_arr << endl; my_arr.insertBefore(10, 1); //1, 10, 3, 5, 7, 9 cout << my_arr << endl; my_arr.remove(3); //1, 10, 3, 7, 9 cout << my_arr << endl; my_arr.push_back(13); //1, 10, 3, 7, 9, 13 cout << my_arr << endl; return 0; }
-
미해결홍정모의 따라하며 배우는 C++
13.4강 클래스 멤버 함수 특수화
특수화를 클래스 내부에 선언, 정의는 불가능한가요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
32번 선택정렬 질문입니다.
//32번 #include<stdio.h> #include<vector> #include<algorithm> using namespace std; int main() { int n; int tmp; scanf("%d",&n); vector<int>a(n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(a[i]>a[j]) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } } for(int i=0;i<n;i++) { printf("%d ",a[i]); } } 제가 이런식으로 짰는데요 정렬은 잘되지만 선생님과 코드가 달라서요 제가 짠것은 버블정렬인가요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
19번 문제 질문입니다.
#include <stdio.h> int main() { int a[105]={0,}; int n,t,j; int num; int sum=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a[i]); } for(int i=1;a[i]!=0;++i) { for(j=i+1;a[j]!=0;++j) { if(a[i]<=a[j]) break; if(a[j+1]==0) { sum++; } } } printf("%d",sum); } 선생님 19번문제를 이렇게 풀면 채점결과 통과는합니다. 하지만 시간을 효율적으로 더 줄이기위해서 a[i]가 a[j]보다 작아서 break 되는순간 a[i]를 ++i를 이용하지않고 바로 a[j]부터 시작해서 비교를 하려는 생각을 해봤습니다. 55 34 46 89가 있으면 55가 89에 걸리는순간 89부터 검사를 하려구요 그래서 이렇게 다시 짜봤습니다. #include <stdio.h> int main() { int a[105]={0,}; int n,t,j; int num; int sum=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a[i]); } for(int i=1;a[i]!=0;++i) { for(j=i+1;a[j]!=0;++j) { if(a[i]<=a[j]) { i=j; break; } if(a[j+1]==0) { sum++; } } } printf("%d",sum); } i=j를 넣는방식으로 짰는데 이러면 어떤건 통과하고 어떤건 통과가안되더라구요 그 이유가 뭔가요??
-
미해결홍정모의 따라하며 배우는 C++
selection 에 문자나 범위를 초과하는 수를 넣으면
안녕하세요, 교수님. 좋은 강의 감사합니다. selection에 문자와 범위를 초과하는 수를 넣었는데 그림과 같이 무한으로 도는걸 발견했습니다. 디버깅으로 selection을 보면 문자일 때는 0으로 나왔습니다. selection에 문자나 엄청나게 큰 수를 넣으면 do-while 안에 내용이 왜 무한으로 도는 건가요??
-
미해결홍정모의 따라하며 배우는 C++
struct, tuple 의 return 형태 관련
안녕하세요 교수님, struct 와 tuple 의 경우 아래처럼 프린트를 해보니까 return by reference 로 반환하는것 같습니다. (주소가 같네요). 이 경우에는 영상 초반의 return by reference 와 달리 에러 메시지도 안나오고 문제가 없는지요? using namespace std; struct Something { int a; int d; }; Something getSomething() { Something s {4, 7}; cout << &s << " " << sizeof(s) << endl; return s; } tuple<int, double, double> getTuple() { int a = 10; double d = 3.14; tuple<int, double, double> tup = make_tuple(a, d, 0.0); cout << &tup << " " << sizeof(tup) << endl; return tup; } int main() { // tuple<int, double, double> tup = getTuple(); // cout << &tup << " " << sizeof(tup) << endl; Something s = getSomething(); cout << &s << " " << sizeof(s) << endl; }
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
제 코드 어떤부분을 수정하면 되는걸까요?
16번문제 인데요 5번만 통과가안되더라구요 int main() { //freopen("input.txt", "rt", stdin); char a[100]; char b[100]; int i, j=0; int sum; char tmp; scanf("%s%s", a, b); for (i = 0; a[i] != '\0'; ++i) { for (j=0; b[j] != '\0'; ++j) { if (a[i] == b[j]) { tmp = b[i]; b[i] = b[j]; b[j] = tmp; } } } sum = strcmp(a, b); if (sum == 0) printf("YES"); else printf("NO"); } 이런식으로 정렬해서 b배열을 a배열처럼 같게만들어서 비교하는거였는데 시간이 오래걸려서 에러가뜨는건가요??.. 비쥬얼스튜디오에서는 stack 'a' corrupted ~~라고 나오는데 이거 너무 오래걸려서 에러나는건가요?? dev에서는 NO라고나오네요 비쥬얼은 YES라고 나오는데 에러뜨구요 어떤점이 잘못된건가요? 선생님이 알려주신 답변은 이해했는데 제 코드에서 수정하는거로는 성공시킬수없나요? 버블정렬n2이라서 그런건가요???
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
9번 모두의 약수 코드와 처음에 알려주신 반복문 코드 차이가 무엇인가요?
9번 #include <iostream> using namespace std; int main(void) { int num,i,j=1; int sum; scanf("%d",&num); if(num>=5 && num <=50000) for(i=1;i<=num;++i) { sum=0; for(j=1;j<=i;++j) { if(i%j==0) sum++; } printf("%d ",sum); } } }이런식으로 코딩하면 n제곱이라고 알려주셨는데 반복문이 2개써서 n의 제곱인가요?? 선생님이 알려주신 시간이 더 적게 드는 방법도 반복문이 2개인데 이것의 시간복잡도를 구하는 방법은 없는건가요? 어떻게해서 nlog n보다는 덜 하다는 걸 구하셧는지 소스를 보고 시간복잡도를 대략적으로 구하는 방법이 궁금합니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
visual studio에서 freopen은 어떻게 사용하나요?
Dev파일이 아닌 visual 같은경우는 프로젝트 안에 어디로 추가해야되나요??
-
미해결홍정모의 따라하며 배우는 C++
break, continue, and ++count vs count++
break, continue가 block을 escape 혹은 skip 하는거라고 강의중에 설명해주셨는데, 이것들이 switch, for, while문에서만 해당하는 것인가요? 일반 block에서도 사용하는 사례가 있는지 궁금합니다. 다음은 a++ vs ++a 질문입니다. int count(0); do { if (count==5) continue; cout << count << endl; }while(++count< 10); // ++count vs count++; 위와 같은 경우에는 0 ~ 9 가 출력이되고 (5제외) int count(0); do { if (count==5) continue; cout << count << endl; }while(count++< 10); // ++count vs count++; 위의 경우에는 0~10이 출력이 됩니다. (5제외) debugger를 통해서도 확인해보았으나 아직 조금 헷갈리는 것 같습니다. operator priority는 a++ , ++a, > 이 순서라 일단 증가 되는게 둘다 먼저고 10과 비교 해서 되는 것 같은데, count++ <10의 경우에는 10까지 나오는지 잘 모르겠습니다. count 가 9일때 count++하면 10이되고 10<10 : false 이므로 count 10은 프린트가 안되야 할것 같거든요. 감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
교수님, 좀 바보같은 질문인데요 ..
제가 예전부터 포인터를 공부할 때마다 궁금했던게.. int *x; int y,z; 이렇게 선언 됐을때, x=&z; // 이건 되지만 y=&z; // 이건 안되는 이유가 굉장히 궁금했습니다. 뭐 이유는 당연히 주소는 포인터형 변수에 넣어야하기 때문이지만, 결국 변수의 주소라는것도 하나의 숫자로 표현된 값인데 왜 int형 변수에는 주소를 못담고 포인터형 변수에만 담을 수 있는걸까요? 1학년때 공부할 때 하도 궁금해서 주소가 숫자가 아니고 string인가 ? 해서 string변수에 담아봤지만 그것도 안됐던 기억이 나네요 ㅎㅎ; 저는 학부시절 공부할때 그래서 Address라는 숨은 '자료형'이 따로 있다고 그냥 스스로 생각했고, 후배들에게 멘토링을 해줄때도 그렇게 생각하면 편하다고 말해줬거든요. 이것도 보안상의 이유로 포인터 변수에 메모리주소를 직접 입력할 수 없는것과 같은 이치인가요 ? 학부시절 교수님께 부끄러워 못했던 질문을 여기서 해보네요.. 혹시 공부하다 저처럼 엉뚱한 의문을 갖는 수강생들이 있을까해서 한번 남겨봅니다 :)
-
미해결홍정모의 게임 만들기 연습 문제 패키지
교수님 질문 드립니다.
안녕하십니까? 교수님 따배시 C++ 완강하고 게임문제 패키지 열심히 듣고있는 평범한 직장인 입니다.(유튜브도 정말 재밌게 보고있습니다.) 몇일째 해결되지 않는 문제가 있어서 문의드립니다.지금것 문제가 없다가 금번 FMOD 예제 파일을 실행 할 때 C 라이브러리 함수들이 호환이 안되더라구요 ㅠ 지금 visual studio 에서 C++로 공부중인데 이상하게 해당 FMOD 예제 파일에서만 호환이 안됩니다.. 예를들면 conio.h, printf 와 같은 함수 및 헤더파일에 빨간 밑줄이 가며 Identify 하지 못한다고 나옵니다... ㅠ 혹시나 해서 새로 파일을 만들면 문제가 없는데 예제파일에서만 그런 문제가 발생하며 새로 다운도 받아보고 구글링으로 문제해결하려 노력해봤지만 방법이 보이지 않아 문의드립니다. 혹시 해결 방법이 있을까요?
-
해결됨홍정모의 따라하며 배우는 C++
저는 true라고 입력해도 false로 나오네요..
include using namespace std;int main() {bool b;cin >> b; cout << boolalpha;cout << "your input : " << b << endl;}여기 코딩에 문제가 있는건가요 ???
-
미해결홍정모의 따라하며 배우는 C++
초급한 질문이라 죄송합니다.
우선 강의 중 몇분 몇초 부분이라 정하기 어려운 질문입니다 ㅠ고민을 아무리 해봐도 답을 찾이 못해서 남깁니다.입출력연산자 오버로딩에서 아래와 같이 const 를 빼고 Cents ¢s 로 받으면std::ostream &operator << (std::ostream &out, Cents ¢s)단항 연산자가 붙지 않으면 cout << cents1 << endl; 는 출력이 되고cout << -cents1 << endl; 는 왜 출력이 안될까요?ㅠconst 쪽 강의를 다시 들어도,, 디버거로 찍어보며 천천히 따라가도 이유를 모르겠어서 질문 남깁니다 .감사합니다.