묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
현대엔지비(Softeer) 코딩 테스트 관련해서
Language가 GNU C++ 17인데 #include<bits/stdc++.h>라이브러리 사용 가능한거죠??
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
로컬 환경과 다르게 오답이라고 나와서 문의 드립니다.
안녕하세요!우선 수업 굉장히 잘 듣고 있습니다! 도움이 많이 되네요!금일 문제를 풀고 있는데 제 로컬 환경에서는 아웃풋이 잘 나오는데 채점 사이트에서 답이 제대로 안나와서요..채점 사이트에 문제가 있는걸까요~?어제까지는 결과가 잘 나왔었어서 로컬 환경은 바뀐게 없습니다..아래 문제 목록 및 현상입니다. 도움 부탁 드립니다문제 : 5. 톰과 제리(BFS)해당 ID : d7a123cc4487문제 현상 : 채점 결과에 리턴값이 몇백줄 공란으로 나온 다음에 결과값이 프린트 되고 있습니다. 문제 : 4. 스도쿠(DFS 활용)해당 ID : ce811046b640문제현상 : 채점결과가 아예 나오지 않고 있습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 1325번 효율적인 해킹 문제 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/d5dbeef9edfd46d4b6ca8eda86668fcd문제는 해결했는데 궁금한 점이 생겨 질문 드립니다.23번째 줄에서 배열 초기화 할 때 fill함수가 아닌 memset함수를 사용해야 하는 이유가 궁금합니다.fill함수를 쓰면 출력 결과가 안 나오는데 어떤 문제 때문에 그런건지 궁금합니다. 코드에 문제가 있는 건가요? -> fill(&visited[0], &visited[0]+10001*10001, 0);
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 문제 질문있습니다..
우선 제가 작성한 코드링크는 다음과 같습니다. (주석 포함)http://boj.kr/5cf259ef97444ada8ad4e9391096d3b90번 노드가 root 가 아닌경우루트 노드가 삭제되는 경우 => result = 0루트 노드가 단독으로 남는 경우 => result = 1까지 고려해서 케이스 분류를 잘게 하여 작성을 했는데...결과가 틀렸다고 나와서 어느 부분을 놓쳤는지 통 모르겠습니다 ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 코드 질문..!
안녕하세요 큰돌님늘 강의에 신경써주셔서 감사합니다. 2-H, 2659번 비밀번호 발음하기, 코딩하다가 틀렸다고 나와서.. 질문드리려고 합니다. 문제에 대한 강의도 확인했구요. 로직도 이해한 상태입니다.그런데 제 코드를 봤을 땐, 어디서 오류가 났는지.. 반례를 도저히 못 찾겠어서 글을 써 봅니다. 혹시 제 코드에서 로직 오류가 있는지 피드백 주실 수 있으실까요?코드 길이나, 반례 등 어떠한 피드백 전부 환영입니다. 제 코드는 링크로 첨부하겠습니다.감사합니다. http://boj.kr/b1f8019ccf3d4f03ac0de822cb532282
-
미해결홍정모의 따라하며 배우는 C++
10.6 컨테이너 클래스 숙제 피드백
안녕하세요 강의를 듣고있는 학생입니다.10.6에서 컨테이너 클래스의 개념을 설명해주시고IntArray를 직접 구현해보는 숙제를 내주셔서 직접 머리를 짜내서 코드를 구현해봤습니다.이 글을 보신 숙련자 분들께 제가 구현한 intArray를 피드백 받고싶어서 글을 작성합니다.#include <iostream>#include <vector>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[m_length]; } IntArray(const std::initializer_list<int>& list) :IntArray(list.size()) { int count = 0; for (auto& ele : list) { //cout << "list" << endl; m_data[count] = ele; count++; } } ~IntArray() { delete[] m_data; } void initialize(const std::initializer_list<int>& list) { delete[] m_data; m_length = list.size(); m_data = new int[m_length]; if (m_data != nullptr) { int count = 0; for (auto& ele : list) { m_data[count] = ele; count++; } } } void reset() { delete[] m_data; m_data = nullptr; } void resize(const int size) { m_length = size; } void insertBefore(const int & value, const int & ix) { m_length += 1; int *n_data = new int[m_length]; int i = ix; for (int n = 0; n < ix; n++) n_data[n] = m_data[n]; n_data[ix] = value; for (i; i < m_length; i++) { n_data[i + 1] = m_data[i]; } delete[] m_data; m_data = n_data; } void remove(const int& ix) { m_length -= 1; int* n_data = new int[m_length]; int count = ix; for (int i = 0; i < ix; i++) { n_data[i] = m_data[i]; } for (count; count < m_length; count ++) { n_data[count] = m_data[count+1]; } delete[] m_data; m_data = n_data; } void push_back(const int& value) { this->m_length += 1; int* n_data = new int[m_length]; for (int i = 0; i < m_length; i++) n_data[i] = m_data[i]; n_data[m_length-1] = value; delete[] m_data; m_data = n_data; } friend ostream& operator << (ostream& out, IntArray& ia) { for (int i = 0; i < ia.m_length; i++) out << ia.m_data[i] << " "; out << endl; return out; }};int main(){ IntArray my_arr{ 1, 3, 5, 7, 9 }; cout << my_arr << endl; my_arr.insertBefore(10, 1); cout << my_arr << endl; my_arr.remove(2); cout << my_arr << endl; my_arr.push_back(13); cout << my_arr << endl; my_arr.initialize({ 1, 2, 3 }); cout << my_arr << endl; return 0;}피드백 받고싶은 이유는 함수를 구현할 때 Array에 int를 추가, 삭제, 수정을 할때새로 동적할당을 받은 뒤에 그 공간에 기존 데이터를 복사해주며 추가,삭제,수정 해줄 부분을 해주고기존 동적할당 공간은 지우고 기존 객체가 가르키는 포인터를 새로 할당한 공간으로 설정 해주었습니다. 선생님 께서 예시로 작성하는 코드 짜임새와 코드라인수에 비해제 머리속에서 나온 그대로를 코드로 담은거라 너무 조잡 난해하다는 생각이 들었습니다.그래서 코드를 더 간단하게 짜려면 이 내용을 어떤식으로 수정하면 좋을지 피드백 받고싶습니다.혹은 코드에 아쉬운점들을 고수분들의 관점으로 보고 말씀해주시면 배워보고싶습니다 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 1992: 쿼드 트리 문제에서 quard함수 탐색 범위 질문입니다.
http://boj.kr/3dd3ee851f2a4530928260c354dd2deb우선, 소스 공유합니다.강사님 께서는 quard함수의 탐색 범위를 for(int i = y; i < y+ size; i++){ for(int j = x; j < x + size; j++){이렇게 잡으셨고저는 for(int i = 0; i < size; i++){ for(int j = 0; j < size; j++){이렇게 잡았는데요. 의미적으로 같지 않나 생각합니다.답이 다른 걸로 보아 문제가 있기는 한거 같은데 뭐가 잘못 된지 모르겠습니다. 도와주세요.
-
미해결홍정모의 따라하며 배우는 C++
15.4 std::move
#pragma once#include<iostream>template <class T>class AutoPtr{public:T *m_ptr = nullptr;AutoPtr(T *ptr = nullptr): m_ptr(ptr){std::cout << "auto default constructor" << std::endl;}~AutoPtr(){std::cout << "autoptr destructor" << std::endl;if ( m_ptr != nullptr )delete m_ptr;}Autoptr(const AutoPtr &a){std::cout << "autoptr copy constructor" << std::endl;//deep copym_ptr = new T;m_ptr = a.m_ptr;}AutoPtr &operator = (const AutoPtr &a){std::cout << "autoptr copy assignment" << std::endl;if ( &a == this ) return *this;if ( m_ptr != nullptr ) delete m_ptr;m_ptr = new T;m_ptr = a.m_ptr;return*this;}//AutoPtr(const AutoPtr &a) = delete;//AutoPtr &operator=(const AutoPtr &a) = delete;AutoPtr(AutoPtr &&a):m_ptr(a.m_ptr){a.m_ptr = nullptr;std::cout << "AutoPtr move constructor" << std::endl;}AutoPtr &operator=(AutoPtr &&a){std::cout << "autoptr move assignment" << std::endl;if ( &a == this )return*this;if ( !m_ptr )delete m_ptr;m_ptr = a.m_ptr;a.m_ptr = nullptr;return*this;}T &operator*()const { return *m_ptr; }T &operator->()const { return m_ptr; }bool isNull()const { return m_ptr == nullptr; }};#pragma once#include<iostream>class Resource{public:int *mData = nullptr;unsigned mLength=0;Resource(){std::cout << "default constructed" << std::endl;}Resource(unsigned length){std::cout << "resource length constructed" << std::endl;this->mData = new int[length];this->mLength = length;}Resource(const Resource &res){std::cout << "copy constructed" << std::endl;Resource(res.mLength);for ( unsigned i = 0; i < mLength; i++ ){mData[i] = res.mData[i];//deep copy}}Resource &operator=(Resource &res){std::cout << "copy assignment" << std::endl;if ( &res == this )return *this;if ( this->mData != nullptr )delete[]mData;mLength = res.mLength;mData = new int[mLength];for ( unsigned i = 0; i < mLength; i++ ){mData[i] = res.mData[i];}return *this;}~Resource(){std::cout << "resource destroyed" << std::endl;if ( mData!=nullptr ){delete[]mData;}}void Print(){for ( unsigned i = 0; i < mLength; i++ ){std::cout << mData[i] << " ";}std::cout << std::endl;}};#include"autoPtr.h"#include"resource.h"int main(){using namespace std;AutoPtr<Resource> res1(new Resource(10000000));cout << res1.m_ptr << endl;AutoPtr<Resource> res2 = res1;cout << res1.m_ptr << endl;cout << res2.m_ptr << endl;}코드를 따라친거 같은데AutoPtr<Resource> res2 = res1;이부분에서 컴파일에러가 납니다 강의에서 코드를 빨리 넘겨서 잘 안보여서 어떤게 에러인지 모르겠습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 어느 부분이 틀렸는지 감이 안잡힙니다..
우선 저는 Java를 이용해서 해당 문제를 풀었습니다.그리고 선생님의 풀이 방식과는 다르게 저는 매 시간마다 먼저 불을 갱신하고 지훈이가 맵을 이동할 수 있는지를 판단하며 가장자리까지 도달하도록 로직을 작성했습니다. 만약, 가장자리에 도달 못할 경우 impossible을 출력하도록 로직을 작성했습니다. 어느 부분이 논리적으로 틀린것인지 아니면 구현을 잘못한건지 궁금합니다...아래는 제 코드입니다.http://boj.kr/1dc68399559846a998ee7c467a046218
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
크기가 정해지지 않은 자료 입력받기
안녕하세요, 항상 양질의 강의 잘 듣고 있습니다!어디에 질문해야할지 모르겠어서 부득이하게 여기 올립니다. 다들 잘 하시는데 저 혼자 너무 초보자같은 질문이라 조금 부끄럽네요..문제를 풀 때, 크기가 정해지지 않은 전제조건을 해결하는게 너무 어렵습니다ㅠㅠ 예를 들면 아래와 같은 의문이 듭니다..크기가 주어지지 않은 2중 배열(N*N) 입력받아서 복제하기 - 크기도 끝도 모르고 N*N 조건만 있으면 문자열로 입력받아서 atoi 해서 잘라서 넣어야하나?3의 배수의 크기로 입력받기, 자료값은 1또는 2또는 3만 받을 수 있다 - 입력받은 사이즈가 3의 배수가 아니거나 1,2,3 외의 숫자가 들어오면 어떻게 처리하지..? 프로그램을 멈추거나 조건에 맞게 들어올때까지 pop, push 해야하나..?제가 보기에도 너무 베이스가 없는 질문같지만 혼자 해결하기 어려워서 질문 드립니다..!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
가끔 코드에서 숫자+'0' ???
가끔 코드에서 string변환시 숫자+'0' 이건 왜있는건가요???큰돌님이 자바스크립트 장인이라서 저런식으로 변환하는거라고 생각하면되겠죠?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 문제 질문
강사님 안녕하세요.강사님 문제 풀이를 보고 두 가지 질문이 있습니다.1-H 문제의 아래 코드에서요,ret = max(ret, psum[i] - psum[i - k]);ret에 최소값을 할당하는건 이해가되는데, 결국 문제는 최대값을 구하는건데 왜 프썸의 합이 아닌 차를 구해서 ret 과 비교하는지 잘 이해가 가지 않습니다.변수에 최소 or 최대 값을 선언할 때, INT_MIN이나 INT_MAX 를 할당하면 문제가 될까요? 일단 해당 문제에 적용 해봤을 떄는 딱히 문제는 없었습니다.
-
미해결홍정모의 게임 만들기 연습 문제 패키지
15:00 부근 질문 있습니다.
#pragma once #include "Game2D.h" namespace jm { class MyTank { public: vec2 center = vec2(0.0f, 0.0f); //vec2 direction = vec2(1.0f, 0.0f, 0.0f); void draw() { beginTransformation(); { translate(center); drawFilledBox(Colors::green, 0.25f, 0.1f); // body translate(-0.02f, 0.1f); drawFilledBox(Colors::blue, 0.15f, 0.09f); // turret translate(0.15f, 0.0f); drawFilledBox(Colors::red, 0.15f, 0.03f); // barrel } endTransformation(); } }; class MyBullet { public: vec2 center = vec2(0.0f, 0.0f); vec2 velocity = vec2(0.0f, 0.0f); void draw() { beginTransformation(); translate(center); drawFilledRegularConvexPolygon(Colors::yellow, 0.02f, 8); drawWiredRegularConvexPolygon(Colors::gray, 0.02f, 8); endTransformation(); } void update(const float& dt) { center += velocity * dt; } }; class TankExample : public Game2D { public: MyTank tank; //MyBullet* bullet = nullptr; //MyBullet* bullet2 = nullptr; // bullet은 총알이 발사됐을 때만 존재하기 때문에 포인터로 되어있고 nullptr로 초기화가 되어있다. //TODO: allow multiple bullets int index = 0; std::vector<MyBullet*> ptr_bullet_array = { nullptr }; //TODO: delete bullets when they go out of the screen public: TankExample() : Game2D("This is my digital canvas!", 1024, 768, false, 2) {} ~TankExample() { //if (bullet != nullptr) delete bullet; //if (bullet2 != nullptr) delete bullet2; for (int i = 0; i <= index; ++i) { if (ptr_bullet_array[i] != nullptr) delete ptr_bullet_array[i]; } } void update() override { // move tank if (isKeyPressed(GLFW_KEY_LEFT)) tank.center.x -= 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_RIGHT)) tank.center.x += 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_UP)) tank.center.y += 0.5f * getTimeStep(); if (isKeyPressed(GLFW_KEY_DOWN)) tank.center.y -= 0.5f * getTimeStep(); // shoot a cannon ball if (isKeyPressedAndReleased(GLFW_KEY_SPACE)) { //if (bullet == nullptr) //{ // bullet = new MyBullet; // bullet->center = tank.center; // bullet->center.x += 0.2f; // bullet->center.y += 0.1f; // bullet->velocity = vec2(2.0f, 0.0f); //} //else if (bullet2 == nullptr) //{ // bullet2 = new MyBullet; // bullet2->center = tank.center; // bullet2->center.x += 0.2f; // bullet2->center.y += 0.1f; // bullet2->velocity = vec2(2.0f, 0.0f); //} ptr_bullet_array.push_back(nullptr); ptr_bullet_array[index] = new MyBullet; ptr_bullet_array[index]->center = tank.center; ptr_bullet_array[index]->center.x += 0.2f; ptr_bullet_array[index]->center.y += 0.1f; ptr_bullet_array[index]->velocity = vec2(2.0f, 0.0f); index++; } //if (bullet != nullptr) bullet->update(getTimeStep()); //if (bullet2 != nullptr) bullet2->update(getTimeStep()); // rendering tank.draw(); //if (bullet != nullptr) //{ // bullet->draw(); //} //if (bullet2 != nullptr) //{ // bullet2->draw(); //} //if (bullet != nullptr && bullet->center.x > 1.2f) //{ // delete bullet; // bullet = nullptr; //} //if (bullet2 != nullptr && bullet2->center.x > 1.2f) //{ // delete bullet2; // bullet2 = nullptr; //} //for (int i = 0; i <= index; ++i) //{ // if (ptr_bullet_array[i] != nullptr && ptr_bullet_array[i]->center.x > 1.2f) // { // delete ptr_bullet_array[i]; // ptr_bullet_array[i] = nullptr; // } //} for (int i = 0; i <= index; ++i) { if (ptr_bullet_array[i] != nullptr) { ptr_bullet_array[i]->update(getTimeStep()); ptr_bullet_array[i]->draw(); if (ptr_bullet_array[i]->center.x > 1.2f) { delete ptr_bullet_array[i]; ptr_bullet_array[i] = nullptr; } } } } }; }교수님께서 설명하신 대로 연습문제를 풀어봤고 문제없이 잘 실행되는 거 같긴 한데 메모리 누수가 해결됐는지 잘 모르겠습니다. 연습문제를 풀기 전에 디버깅 모드로 봐도 CPU 사용량이 그대로인데 어디서 어떻게 확인할 수 있을까요?
-
미해결홍정모의 따라하며 배우는 C++
이거 그냥 []연산자 오버로딩이 맞나요?
(사진)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 4949번 - 균형잡힌 세상
http://boj.kr/6436d8d2bb3c44d3b8568985b5d28abf런타임 에러라고 뜨는데 어떻게 고쳐야 할지 전혀 모르겠습니다. 코드는 링크 첨부하였습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/4dc02e7565254fc7bfd44cd6a8609f94작성하고, 강사님이랑 코드를 비교하는데, 어느 부분이 오류가 발생한 것인지 모르겠습니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
혹시 prev 배열 연쇄 for문 python에는 그런 문법 없나요?
ret = bfs() v = [] v.append(K) while K != N: K = prev[K] v.append(K) print(ret - 1) print(*v[::-1])prev for문코드 같은 문법 파이썬에는 없나요???while문으로 만들긴했지만요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
11655 문제 결과값 변수 할당
안녕하세요.11655 번 문제 풀이에서 큰돌님은 입력 받은 변수 s 의 값을 덮어써서 결과를 출력하셨는데, 저는 아래처럼 새로운 변수에 담에서 출력했습니다. 이때, 공간 복잡도가 늘어나게 되는건가요?string s, res; int main() { getline(cin, s); for (char c: s) { if (c >= 97 && c <= 122) { if (c + 13 > 122) res += c + 13 - 26; else res += c + 13; } else if (c >= 65 && c <= 90) { if (c + 13 > 90) res += c + 13 - 26; else res += c + 13; } else { res += c; } } cout << res; return 0; }
-
해결됨홍정모의 따라하며 배우는 C++
return *this에 관해 질문이 있습니다.
*this가 멤버변수를 참조한다는 것은 알겠는데 왜 그냥 this를 리턴하면 저 오류가 뜨는지 모르겠습니다.this도 인스턴스화된 객체를 가리키는 포인터니까 좌값이 맞지 않나요? 아니면 인스턴스의 주소가 우값에 속해있는 건가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 질문입니다
http://boj.kr/8f12b9f44197490ebdc6ad0c7a21192c안녕하세요,제 방식대로 시간복잡도를 최대한 줄였다고 생각했는데 틀리는 이유가 뭔지 잘 모르겠습니다 ㅠㅠ