String 으로 바꿔서 풀었을
미해결
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
앞에서 말씀하신것처럼 문자열 접근은 c가 편하다고 하신게 왜인지 알 것 같습니다ㅠ 주로 했던 언어는 c++이라 c로만 준비하려하니 어색해 서 그런데 c로 이해하고 진도만 먼저 나가도 되는걸까요..? 아니면 c++로 바꿔보는 연습도 해야되는걸까요? 같은듯 다른거 같아서 질문드립니다
- C++
- 코테 준비 같이 해요!
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
앞에서 말씀하신것처럼 문자열 접근은 c가 편하다고 하신게 왜인지 알 것 같습니다ㅠ 주로 했던 언어는 c++이라 c로만 준비하려하니 어색해 서 그런데 c로 이해하고 진도만 먼저 나가도 되는걸까요..? 아니면 c++로 바꿔보는 연습도 해야되는걸까요? 같은듯 다른거 같아서 질문드립니다
미해결
홍정모의 따라하며 배우는 C++
선생님께서 레퍼런스를 사용하라고 하셨는데, 왜 저는 바뀌어서 출력되죠?ㅠㅠㅠ 아래 코드처럼 작성하면 정상적으로 10이 출력돼요... 항상 좋은 강의 감사합니다~ const int fibonacci[] = { 0,1,1,2,3,5,8,13,21,34,55,89 }; for (int number : fibonacci) { number = 10; cout << number; cout << endl; }
미해결
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요! 궁금한것이 생겨서 질문드립니다! 저는 문제를 처음 봤을때 나이를 나타내는 940909-~~ 의 94를 문자열로 추출해 정수로 바꾸는 방식을 생각했었습니다. 그래서 string 변수에 94 문자를 저장하여 정수로 바꾸는 과정에서 atoi라는 함수가 있더군요 이런 라이브러리의 함수를 사용하면 안되는건가요? 아스키코드로 접근하는것이 더 효율적이라 저렇게 접근하신거고 이렇게 접근해야 코딩테스트의 방향성에 맞는것인가요?
미해결
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
문제에서 출력파일이름 관련해서 있는데 이건 무시해도 되는건가요?
해결됨
홍정모의 따라하며 배우는 C++
복사생성자 부분을 주석처리하고 Fraction frac(3,5); Fraction fr_copy=frac; 을 디버그해보니 클래스 안으로 들어가지도 않고 바로 복사가 됩니다. 이렇게 해도 복사가 바로 되는데 복사생성자를 사용하는 이유는 무엇인가요? (다음 강의를 보면 이해가 되는건가요?) 1차원적인 질문만 계속하니 쑥쓰럽네요.. 교수님 늘 감사드립니다.
미해결
홍정모의 게임 만들기 연습 문제 패키지
이번 강의에서는 SharedPointer를 통해 GeometricObject를 사용하셨는데 UniquePointer를 사용하지않으신 이유가 있을가요??
미해결
홍정모의 따라하며 배우는 C++
메모리릭이 영향력이 크다는걸 경험했네요.
미해결
홍정모의 따라하며 배우는 C++
처음에 생성자에서 초기화한 setID(id) (12번째 줄)은 어떤거를 초기화하신 건가요??? 아직까지 클래스 생성자가 필요한 이유랑 생성자에서 초기화할 수 있는 것들이 무엇이 있는지 감이 잘 안잡힙니다ㅠㅠㅠ
미해결
홍정모의 따라하며 배우는 C++
안녕하세요 교수님! 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 예제에 대한 질문입니다. (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++) : 코딩테스트 대비
아무리봐도 잘못된 부분이 보이지 않는데 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번 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++
안녕하세요? 증감연산자(후위) 오버로딩 할 때 지역변수 temp 를 리턴하는 거라서 이것도 문제가 될 수 있는 건가요? 감사합니다.
해결됨
홍정모의 따라하며 배우는 C++
안녕하세요? 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++
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++) : 코딩테스트 대비
바깥 for문에서 왜 for i = 0 ; i < n-1 을 해주었는지 궁금합니다 for i = 0 ; i < n이 아니고요