묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
아스키코드에 대해서 질문있습니다.
안녕하세요! 궁금한것이 생겨서 질문드립니다! 저는 문제를 처음 봤을때 나이를 나타내는 940909-~~ 의 94를 문자열로 추출해 정수로 바꾸는 방식을 생각했었습니다. 그래서 string 변수에 94 문자를 저장하여 정수로 바꾸는 과정에서 atoi라는 함수가 있더군요 이런 라이브러리의 함수를 사용하면 안되는건가요? 아스키코드로 접근하는것이 더 효율적이라 저렇게 접근하신거고 이렇게 접근해야 코딩테스트의 방향성에 맞는것인가요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
출력파일은 output.txt
문제에서 출력파일이름 관련해서 있는데 이건 무시해도 되는건가요?
-
해결됨홍정모의 따라하며 배우는 C++
[1:50]복사생성자를 사용하는 이유
복사생성자 부분을 주석처리하고 Fraction frac(3,5); Fraction fr_copy=frac; 을 디버그해보니 클래스 안으로 들어가지도 않고 바로 복사가 됩니다. 이렇게 해도 복사가 바로 되는데 복사생성자를 사용하는 이유는 무엇인가요? (다음 강의를 보면 이해가 되는건가요?) 1차원적인 질문만 계속하니 쑥쓰럽네요.. 교수님 늘 감사드립니다.
-
미해결홍정모의 게임 만들기 연습 문제 패키지
이번 강의에서는 SharedPointer를 이용해서 GeometricObject를 저장하셨는데
이번 강의에서는 SharedPointer를 통해 GeometricObject를 사용하셨는데 UniquePointer를 사용하지않으신 이유가 있을가요??
-
미해결홍정모의 따라하며 배우는 C++
ㅋㅋ따라하다가 컴퓨터가 멈췄습니다.
메모리릭이 영향력이 크다는걸 경험했네요.
-
미해결홍정모의 따라하며 배우는 C++
클래스에서 생성자가 아직 이해가 잘 안되네요ㅠㅠㅠ
처음에 생성자에서 초기화한 setID(id) (12번째 줄)은 어떤거를 초기화하신 건가요??? 아직까지 클래스 생성자가 필요한 이유랑 생성자에서 초기화할 수 있는 것들이 무엇이 있는지 감이 잘 안잡힙니다ㅠㅠㅠ
-
미해결홍정모의 따라하며 배우는 C++
2.7강 char형에 대한 질문입니다.
안녕하세요 교수님! 2.7 문자형 char 강의 중 약 13분에 나오는 예제에 대한 질문입니다. 예제에서 c1을 입력받을 때 65를 입력해봤습니다. 출력하기 전에 제 예상으로는 c1은 char형(문자형)이고, 숫자를 입력하면 ASCII코드에 따라 그 숫자에 맞는 문자가 나올 것이라고 생각했습니다. (char c1(65);에서 c1값을 출력했을 때와 같을 것이라고 예상했습니다.) 그런데 제 예상과는 다르게 c1에 ASCII코드 'A'에 해당하는 65를 입력했더니 c1의 값은 6으로 출력이 되었습니다. (ASCII코드도 6에따라 54로 출력되었습니다.) 왜 여기에서는 A가 아닌 6이 출력이 되는지 궁금합니다. 아래에 코드와 출력화면을 첨부합니다. 감사합니다:) #include <iostream> #include <limits> int main() { using namespace std; char c1(65); cout << c1; cin >> c1; cout << c1 << endl; cout << static_cast<int>(c1) << endl; return 0; }
-
미해결홍정모의 따라하며 배우는 C++
2.6강 bool 예제에 대한 질문 드립니다.
(이전 질문 삭제 및 수정 후 다시 질문드립니다:) ) 교수님 안녕하세요, 2.6강 bool 예제에 대한 질문입니다. (19:53초) 교수님께서 "정수 하나를 입력받고 그 숫자가 홀수인지 짝수인지 출력하는 프로그램을 만들어봅시다."라는 과제를 내주셨는데 구현을 아래 코드와 같이 했으며, 홀수 짝수 결과값도 입력값에 따라 잘 출력이 됩니다. 그런데 궁금한 점은, 여기서 제가 사진과 같이 정말 큰 수를 짝수로 입력하게 되면 홀수로 나옵니다. (반대로, 정말 큰 수를 홀수로 입력하게 되면 홀수로 나옵니다.) 이 결과값은 왜 이런지 잘 이해가 되지 않아서 질문드립니다. 감사합니다:) #include <iostream> int main() { using namespace std; int a; cin >> a; if (a % 2 == 0) cout << "짝수" << endl; else cout << "홀수" << endl; return 0; }
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
23번 문제를 벡터로 풀다가 질문이 있습니다.
아무리봐도 잘못된 부분이 보이지 않는데 count를 print해보았을 때, 왜 count가 7로 나오는지 모르겠습니다.. 혹시 잘못된 부분이 있다면 지적해주시면 감사하겠습니다. #include<iostream> #include<stdio.h> #include<vector> using namespace std; int main() { freopen("input.txt", "r", stdin); int n, count = 1, max = -1; 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++) { count = 1; for (int j = i + 1; j < n; j++) { if (a[i] < a[j] || a[i] == a[j]) count++; //5 7 3 3 12 12 13 10 11 else break; } printf(" %d", count); if (count > max) max = count; } //printf("%d", max); }
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요 51번 질문입니다!
비쥬얼스튜디오에서 51번 700x700 배열을 선언하면 입력하기 전에 종료되는데 어떻게 하면 되나요??
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
선생님이 짜주신 코드 실행시 이런 화면이 나옵니다.
terminate called after throwing an instance of 'std::bad_alloc' what()… 콘솔창에 이렇게 나오고 실행이 되질않아요..
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
이건 무슨차이인가요?
배열크기를 300001로 하는거랑 30001로 하는거랑 success 갯수가 다른데 무슨차이인가요? 300001로하면 4번까진 성공나오고 5번은 타임리밋인데 30001로 배열크기로하면 2번부터 타임리밋이 나옵니다.. #pragma warning(disable:4996) #include <stdio.h> #include <string.h> #include <math.h> #include<time.h> #include<iostream> #define endl '\n'; using namespace std; int a[300001]; int b[300001]; int r[300001]; int main() { int n1,n2,k=0,j=0,max=0; scanf("%d",&n1); for(int i=1;i<=n1;i++) scanf("%d",&a[i]); scanf("%d",&n2); for(int i=1;i<=n2;i++) scanf("%d",&b[i]); for(int i=1;i<=n1;i++) { k=a[i]; if(k>max) max=k; r[k]++; } for(int i=1;i<=n2;i++) { j=b[i]; if(j>max) max=j; r[j]++; } for(int i=1;i<=max;i++) { if(r[i]==2) printf("%d ",i); } }
-
해결됨홍정모의 따라하며 배우는 C++
[연습문제] 이니셜라이저 리스트 , 대입연산자 오버로딩
안녕하세요? 이 경우에는 파라미터?로 이니셜라이저 리스트를 받으니까 1. 셀프 어사인먼트 방지하는 방법은 생각을 못했습니다. IntArray& operator=(const std::initializer_list<int>& list) { cout << "assignment operator" << endl; cout << "list.size() In assignment operator " << list.size() << endl; delete[] m_data; int length = list.size(); m_data = new int[length]; int count = 0; for (auto& element : list) { m_data[count] = element; ++count; } return *this; } //IntArray(list.size()); // 생성자를 통한 초기화는 안되는거고 2. m_data가 데이터를 가지고 있을 수는 있으니까 지워주고 리스트의 길이만큼 new로 초기화해주고 리스트의 값을 복사해줬습니다. 교재인 learncpp에서 해당 부분을 찾아보니 다음과 같이 출력을 해야 한다더라고요. 그런데 리스트의 사이즈는 7인데 5개만 나왔습니다. 자고 일어나서 해결해보겠습니다. 감사합니다. <출력화면> <전체코드> // 9_12.cpp : This file contains the 'main' function. Program execution begins and ends there. // #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 = 0) : m_length(length) { m_data = new int[length]; } IntArray(const std::initializer_list<int>& list) : IntArray(list.size()) { cout << "list.size() In constructor " << list.size() << endl; int count = 0; for (auto& element : list) { m_data[count] = element; ++count; } //for (unsigned count = 0; count < list.size(); ++count) // m_data[count] = list[count]; // error } ~IntArray() { delete[] this->m_data; } IntArray& operator=(const std::initializer_list<int>& list) { cout << "assignment operator" << endl; cout << "list.size() In assignment operator " << list.size() << endl; delete[] m_data; int length = list.size(); m_data = new int[length]; int count = 0; for (auto& element : list) { m_data[count] = element; ++count; } return *this; } friend std::ostream& operator << (std::ostream& out, const 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 = {7, 2, 3, 2, 1, 6, 5}; cout << int_array << endl; return 0; }
-
해결됨홍정모의 따라하며 배우는 C++
[04:05] 증감연산자(후위) 오버로딩할 때 지역변수 temp
안녕하세요? 증감연산자(후위) 오버로딩 할 때 지역변수 temp를 리턴하는 거라서 이것도 문제가 될 수 있는 건가요? 감사합니다.
-
해결됨홍정모의 따라하며 배우는 C++
[10:22] Doctor.h와 Patient.h가 분리되어 있을 때는 meetDoctors함수를
안녕하세요? Doctor.h와 Patient.h가 분리되어 있을 때는 meetDoctors함수는 Patient.h에 있기 때문에 Doctor.h로 옮길 수가 없는데 이럴땐 어떻게 해야하나요? 감사합니다. <코드> #pragma once #include <iostream> #include <string> #include <vector> #include "Doctor.h" //class Doctor; class Patient { private: std::string m_name; std::vector<Doctor*> m_doctors; public: Patient(const std::string& name_in) : m_name(name_in) {} void addDoctor(Doctor* new_doctor) { m_doctors.push_back(new_doctor); } void meetDoctors() { for (auto& elem : m_doctors) std::cout << "meet doctor : " << elem->m_name << std::endl; } void setName(const std::string& name_in) { m_name = name_in; } friend std::ostream& operator<<(std::ostream& out, const Patient& patient) { out << patient.m_name; /*for (auto& elem : patient.m_doctors) out << *elem;*/ return out; } friend class Doctor; }; =====================자답============ 이렇게 해결을 했는데 맞게 한건가요? ㅠㅠ .h, .cpp로 선언과 정의를 분리하고 cpp에서 전부 인클루드하고 헤더 두 군데서 모두 전방선언 해줬습니다. 감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
[07:22] 주석처리 되는 부분 앞에 const 붙여서 써도 되는거죠?
static const int m_value = 3;에서 초기화를 안해주고 바깥의 static 변수 초기화하는 부분에 const를 붙여줬습니다. class Something { public: static const int m_value; }; const int Something::m_value = 3; 감사합니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
어디서 틀린걸까요?
#pragma warning(disable:4996) #include <stdio.h> #include <string.h> #include <math.h> #include<time.h> #include<iostream> #define endl '\n'; using namespace std; int c[1001]; int arr[20]; int main() { int s, n,tmp,k,wh; scanf("%d%d", &s, &n); for (int i = 0; i < n; i++) { scanf("%d", &tmp); if (arr[0] == 0&&c[tmp]==0) { arr[0] = tmp; c[tmp] = 1; } else if (arr[0]!=0&&c[tmp]==0) { for (int j = i; j > 0; j--) { arr[j + 1] = arr[j]; arr[j] = arr[j - 1]; } c[tmp] = 1; arr[0] = tmp; } else if (arr[0] != 0 && c[tmp] == 1) { for (k = 0; k < i; k++) { if (arr[k] == tmp) break; } for (int j = k; j > 0; j--) { arr[j + 1] = arr[j]; arr[j] = arr[j - 1]; } arr[0] = tmp; } } for (int i = 0; i < s; i++) { printf("%d ", arr[i]); } } 해쉬 느낌으로 배열을 하나선언해서풀어봤습니닫 1,2,3,4,5번에서 1,2번만맞고 3,4,5에서 자꾸 틀리는데 왜틀렸는지를 모르겟어요 ...분명 이론적으로 맞았다 생각이드는데 숫자 한두개씩 틀리더라구요
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
반복문 i에서
바깥 for문에서 왜 for i = 0 ; i < n-1 을 해주었는지 궁금합니다 for i = 0 ; i < n이 아니고요
-
미해결홍정모의 따라하며 배우는 C++
[04:58] 연습문제 9-> 0, 0->9 로 돌아가게 하는 법
안녕하세요. 연습문제 풀어봤습니다. 9에서 ++ 하면 0이 되게 하는 부분은 m_digit == 9 일 때는 그냥 m_digit에 0을 대입 했습니다. <코드> Digit& Digit::operator ++ () { if (m_digit == 9) { m_digit = 0; } else { ++m_digit; } return *this; } Digit& Digit::operator -- () { if (m_digit == 0) { m_digit = 9; } else { --m_digit; } return *this; } Digit Digit::operator ++ (int) { Digit temp(m_digit); // m_digit++; ++(*this); return temp; } Digit Digit::operator -- (int) { Digit temp(m_digit); // m_digit++; --(*this); return temp; } <출력> PS C:\coding\tbcpp_review\Chapter9> .\a.exe prefix --0 9 9 prefix ++9 0 0 postfix 0-- 0 9 postfix 9++ 9 0 <전체코드> #include <iostream> using namespace std; class Digit { private: int m_digit; public: Digit(int digit = 0) : m_digit(digit) {} // prefix Digit& operator ++ (); Digit& operator -- (); // postfix Digit operator ++ (int); Digit operator -- (int); friend ostream& operator << (ostream& out, const Digit &digit) { out << digit.m_digit; return out; } }; Digit& Digit::operator ++ () { if (m_digit == 9) { m_digit = 0; } else { ++m_digit; } return *this; } Digit& Digit::operator -- () { if (m_digit == 0) { m_digit = 9; } else { --m_digit; } return *this; } Digit Digit::operator ++ (int) { Digit temp(m_digit); // m_digit++; ++(*this); return temp; } Digit Digit::operator -- (int) { Digit temp(m_digit); // m_digit++; --(*this); return temp; } int main() { Digit digit1(0); Digit digit2(9); Digit digit3(0); Digit digit4(9); cout << "prefix --0" << endl; cout << "--digit1(0) : " << --digit1 << endl; cout << "digit1(0) : " << digit1 << endl; cout << "prefix ++9" << endl; cout << ++digit2 << endl; cout << digit2 << endl; cout << "postfix 0--" << endl; cout << digit3-- << endl; cout << digit3 << endl; cout << "postfix 9++" << endl; cout << digit4++ << endl; cout << digit4 << endl; return 0; } 감사합니다.
-
해결됨홍정모의 따라하며 배우는 C++
25분 01초경 중괄호 안 x=1
중괄호 안에서만 x=1이 쓰이고나서 중괄호 밖으로 나오면 다시 main문의 x가 쓰여야하는 것아닌가요? 왜 계속 중괄호 한의 1이 사용되는지 헷갈립니다