묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C++
반복문 안에 선언
안녕하세요. 반복문 안에 선언을 할 경우 매번 메모리가 회수되고 할당되나요?메모리의 할당과 회수는 운영체제가 관여한다고 알고 있는데, 위와 같은 경우 성능에 좋지 못한 영향을 줄 것 같습니다.만약 제가 컴파일러라면 반복문 안에 선언할 경우 이를 파악해 메모리를 회수하지 않고 반복문을 빠져나갈 때 회수할 것 같습니다. 실제로 컴파일러도 이렇게 동작하는지, 만약 아니라면 반복문 외부에 캐싱하는 것이 유의미한 일인지도 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C++
블록 내에서 선언한 vector를 이차원 vector에 넣었을 때
블록 안에서 선언한 vector은 블록 밖으로 나가면 회수되는 것으로 알고 있습니다.그런데 만약 이 vector를 블록 밖에서 선언한 이차원 vector에 넣었을 때 어떻게 되나요?실행은 잘 되는데 이게 컴파일러가 길이를 유지시켜주는 건지, 아니면 이차원 vector에 복사되는 것인지 궁금합니다. vector<vector<int>> wheelList(NUMBER ); //caching { vector<int> wheel(SIZE); string temp; for(int i = 0; i < 4; i++){ cin >> temp; for(int j = 0; j < NUMBER; j++){ wheel[j] = temp[8 - j - 1] - '0'; } wheelList[i] = wheel; } }
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
"board에 쓰는 동안 버퍼 오버런이 발생했습니다"
안녕하세요 달팽이 문제를 푸는데 답은 잘 나옵니다 그런데 SetBoard함수의 board[y][x] = i이 부분에서 "board에 쓰는 동안 버퍼 오버런이 발생했습니다"라는 경고가 나옵니다 이러한 경고가 왜 뜨는지와 이 경고를 해결하려면 어떻게 코드를 수정해야 하는지 알 수 있을까요?코드링크:http://boj.kr/d69d82f1e84c49da942ec7948ab48529
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S dp 배열을 좀 더 이용해보려고 코드를 바꿔봤는데 틀렸습니다가 나오네요
아래는 맞는 코드입니다.http://boj.kr/1b13bda362154df9b5be8a26cad57c96이 코드를 개선해보려고 아래와 같이 코드를 짜보니 틀렸습니다가 나오네요.http://boj.kr/a6cbb7ca3b214df386ebb96214bc2785dp를 아직 잘 모르는데 선생님의 풀이를 보고 조금 더 횟수를 줄일 수 있지 않을까 해서 한번 바꿔봤는데요. 맞왜틀에 빠졌습니다... 도저히 혼자서는 이유를 찾을 수 없어서 질문드립니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-T 질문이 있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/64dbaea1720740bd91f3d12c2ccee13a 원래 코드를 변형을 해봤는데 왠지는 모르겠지만 틀려서 왜 틀렸는지 몰라서 질문을 드립니다. 예제 입력까지는 맞았습니다. 바뀐 부분은 원래는 main함수에서 go함수를 호출할 때 a[0]를 먼저 sum에 더해놓고 가는데, 제가 바꾼 코드에서는 a[0]를 더하지 않고 호출하는 부분에서 해당하는 idx의 a[idx]를 더했고 기저 조건도 idx-2에서 리턴하는 게 아닌 idx-1에서 리턴하게 두었습니다. 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-개념강의 2792번 질문있습니다
http://boj.kr/ecb460dd765d43ae81d5747be4e066d2이분탐색이 전체에서 /2단위로 줄여서 루트2단위로 줄어들어 시간복잡도를 줄이려는 탐색방법인것까지는 이해가 가는데 mid를 지정해놓고 mid-1, mid+1 mid 이부분을 l, r, 각각 지정하는부분이 문제마다 헷갈려서 잘 이해가 안가네요 ㅜㅜ예전에도 비슷한문제로 머리가아팠던거같은데 설명해주시면감사하겠습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
우분투에서 c++ 프로그램
운영체제를 우분투 쓰고 있는데 c++ 프로그램으로 vscode로 괜찮은가요?
-
미해결홍정모의 따라하며 배우는 C++
대략 7분부터 작성하시는 Calc클래스에서
}Calc(int init_value) : m_value(init_value) {} Calc& add(int value) { m_value += value; return *this; } Calc& sub(int value) { m_value -= value; return *this; } Calc& mult(int value) { m_value *= value; return *this; }Calc& add, Calc& sub ,Calc& mult에서&를 지워도 오류가 안나더라구요 Calc add(int value) { m_value += value; return *this; } Calc sub(int value) { m_value -= value; return *this; } Calc mult(int value) { m_value *= value; return *this; }&만 지우고 int main() { { Calc cal=10; cal.add(10).sub(1).mult(2).print(); //38 cal.add(1).print();//21 return 0; } };돌렸는데 38로 값이 똑같이 나왔어요차이가 뭐지? 생각이 들어서add를 한번 더 했는데 21이 나오더라구요디버깅해보니까 20으로 시작하는 걸로 나오는데 이유를 모르겠어서요차이가 뭘까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A combi 메소드 시작 인덱스에 따른 시간초과 이유
안녕하세요 큰돌님! 다름이 아니라, combi 메소드를 생성할 때,for (int i = start; i < chicken.size(); i++) { arrayList.add(i); combi(i); arrayList.remove(arrayList.size() - 1); }이 부분에서 starting index를 0으로 하면 시간초과가 나는 반면,starting index를 -1로 설정한 후for (int i = start + 1; i < chicken.size(); i++) {/*...*/}이런 식으로 작성하면 문제없이 통과됩니다. -1에서부터 인덱스를 시작하면 combi 메소드를 호출하는 횟수가 0에서 시작하는 것보다 상당한 차이로 줄어드는데 혹시 그러한 이유를 알 수 있을까요..?혹시 combi 내에서 호출할 때에 for문에서 int i의 시작점이 변화 없이 그대로 진행되기 때문일까요.. 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 시간초과 질문드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/3ab039616a084231ae90581c8e7d1ba8 비트마스킹과 백트래킹을 이용해 풀이해봤으나 시간이 초과되어 어떤 효율적이지 못한 부분이 있는지 궁금해 질문드립니다.풀이 아이디어는 전수조사를 할때, 어차피 26개중 K를 모두 배운 경우가 K개보다 적게 배운 경우보다 읽을 수 있는 단어가 많거나 같을 것이기 때문에 21개 중 K-5개의 알파뱃을 고르는 경우를 백트래킹을 이용해 찾으면 그것이 더 효율적이지 않을까 생각되어 시도해보았습니다.
-
미해결홍정모의 따라하며 배우는 C++
extern 질문
//test.cpp #include <iostream> using namespace std; static int g_a = 1; // forawrad declaration void doSomething(); // == extern void doSomething(); extern int a; int main() { doSomething(); cout << a << endl; return 0; }// test2.cpp #include <iostream> int a = 10; void doSomething() { using namespace std; cout << "Hello" << endl; }다음 코드 중 test.cpp 파일에서 void doSomething();같은 경우는extern void doSomething();이렇게 extern 을 붙이든 말든 똑같이 잘 작동합니다. 하지만extern int a;의 경우에는 extern 없이int a;이렇게만 하면 linker error가 나옵니다. 이유가 궁금해요. 다음은 해당 linker error 입니다.현재 맥북 프로 사용 중이며 arm64입니다.VS code로 std=c++17 컴파일 했습니다.duplicate symbol '_a' in: /var/folders/js/x_hy51p16_x1jsv90sbbh7mw0000gn/T/test-06a7e1.o /var/folders/js/x_hy51p16_x1jsv90sbbh7mw0000gn/T/test2-9147ce.o ld: 1 duplicate symbol for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
함수 호출과정 질문입니다
안녕하세요.배운 내용을 다시 공부하면서 실행해본 결과입니다.함수 호출시에 232바이트만큼 rsp를 이동시키고 rbp를 32바이트만큼 빼서스택프레임당 32byte와 200byte의 여백을 남기는것을확인했습니다. 컴파일러가 컴파일시에 스택 사이즈를 정하고 저장하는 위치가 어디인지 궁금합니다. (예를들어 스택프레임은 32byte고 중간에 카나리(?)는 200byte라는걸 결정하면, os는 프로그램 실행시 해당 정보를 어떻게 알 수 있나요?)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7 - K 문제 질문입니다.
좋은강의 감사합니다 선생님!해당 문제에 똑같은 질문이 있었는데 이해가 되지 않아서 질문드립니다.. 메모이제이션 부분에int &ret = dp[y][x][cnt][prev]; if (ret != -1) return ret; ret = 0;에서 ret = 0; 으로 초기화하는 이유를 모르겠습니다.질문 답변에서는 리프노드에서 -1을 return 하면 안되기 때문에 초기화를 해주어야 한다고 하셨는데, 리프노드에서는 기저사례에 걸리기 때문에 반드시 1 아니면 0을 리턴해주지 않나요?그래서 ret = 0을 초기화 해주지 않아도 0 또는 1을 반환되는것을 더하여 넘겨주는 것으로 이해하고 있는데 어떤 부분을 놓치고 있는지 잘 모르겠습니다ㅠㅠret = 0부분을 주석처리하고 예제 입력을 넣었을 때 예제2)6 4 2 5 3 3 2이 입력만 정답과 다른답이 나옵니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
아래 질문 링크 재공유>> 해결했습니다.^^;;
.
-
미해결홍정모의 따라하며 배우는 C++
vector resize() 질문.
이 코드에서의 결과값은#include <iostream> #include <vector> using namespace std; int main() { std::vector<int> v = {7, 8, 9}; for (auto &e : v) { cout << e << " "; } cout << endl; cout << "v.size() " << v.size() << endl; cout << "v.capacity() " << v.capacity() << endl; v.resize(2); cout << "v.size() " << v.size() << endl; cout << "v.capacity() " << v.capacity() << endl; //v.resize(5); // cout << v[2] << endl; // XXX // cout << v.at(2) << endl; // XXX int *ptr = v.data(); cout << ptr[2] << endl; return 0; }7 8 9 v.size() 3v.capacity() 3v.size() 2v.capacity() 39 이렇게 예상했던 것처럼 잘 나옵니다. 하지만다시 resize(5)를 하면,#include <iostream> #include <vector> using namespace std; int main() { std::vector<int> v = {7, 8, 9}; for (auto &e : v) { cout << e << " "; } cout << endl; cout << "v.size() " << v.size() << endl; cout << "v.capacity() " << v.capacity() << endl; v.resize(2); cout << "v.size() " << v.size() << endl; cout << "v.capacity() " << v.capacity() << endl; v.resize(5); cout << "v.size() " << v.size() << endl; cout << "v.capacity() " << v.capacity() << endl; // cout << v[2] << endl; // XXX // cout << v.at(2) << endl; // XXX int *ptr = v.data(); cout << ptr[2] << endl; return 0; }7 8 9 v.size() 3v.capacity() 3v.size() 2v.capacity() 3v.size() 5v.capacity() 60 결과값이 이렇게 나오게 되는데 ptr[2]의 값이 왜 0이 되는지,capacity의 값이 6이 되는지 모르겠습니다.. 맥북 m1 pro 사용 중이고, VS Code 사용, g++ -std=c++17로 컴파일 했습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B bfs를 반환형을 int로 해서 풀려고 하는데 틀립니다.
http://boj.kr/d137e4b306b742969928aca1cf5ed00f 선생님 안녕하세요. 풀이과정과 다르게 bfs반환형을 int로 만들어 풀려고 했지만 통과되지가 않습니다. 풀이랑 비교해도 비슷한거 같은데 다른부분을 잘 모르겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2%만 맞고 틀리네요..
https://www.acmicpc.net/source/67720015제 알고리즘에 강사님코드를 추가했습니다.bfs를 main에서 사용할 생각을 처음엔 못하고 불의위치만 bfs코드를 따로 떼어내서 구현한 것 빼고는비슷합니다..
-
해결됨홍정모의 따라하며 배우는 C++
2.5부동소수점수(29분:43초) isnan 함수
안녕하세요. 아래의 코드에서 isnan(posinf)는 왜 1이 나오고, isnan(neginf)는 왜 0이 나오는 지 모르겠습니다.posinf는 양의 무한대로 발산하고, neginf는 음의 무한대로 발산하는 것 아닌가요? 왜 둘의 결괏값이 다른 건지 이해가 가지 않는데, 자세한 설명해주시면 정말 감사하겠습니다.#include <iostream>#include <iomanip>#include <limits>#include <cmath>using namespace std;int main(){ double zero = 0.0; double posinf = 5.0 / zero; double neginf = - 5.0 / zero; cout << std::isnan(posinf) << endl; cout << std::isnan(neginf) << endl;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-E 반례 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/39c15e9338ad4585955d4d9f7453c741 나름의 방법대로 구현해봤는데, 반례를 찾기 어려워 질문드립니다. 좋은 강의 감사드립니다!
-
미해결[게임 프로그래머 도약반] DirectX11 입문
다렉 수업 전에 들어야 할 수업들이 있나요?
안녕하세요제가 미리보기 강의들을 보다가 수업 방식도 마음에 들었고 미리보기 예제 코드를 다운 받기 위해서 그냥 바로 수업 신청을 했습니다. 근데 초반에서 지속적으로 전에 수업에서 다 배웠다고 많은 부분들을 그냥 넘어가셔서 제가 이해가 잘 가지가 않습니다. 혹시 배우지 못했던 부분만을 따로 빼서 저렴하게 강의를 올리실 의향이나 아니면 제가 따로 공부하고 와야 할 부분을 알려주실 수 있을까요? 좀 많이 당황스럽습니다.