묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1940 주몽 문제 메모리 초과 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. https://www.acmicpc.net/source/share/f81085fda0c842898c7f440cecb12d4e 안녕하세요. 선생님 제가 선생님 풀이를 보기전에는 이렇게 2차원 배열을 통해서 구간별 누적합을 저장했는데 메모리 초과가 나와서 의문이였습니다. 무엇이 문제였을까요
-
미해결[게임 프로그래머 도약반] DirectX11 입문
애니메이션 모델 버텍스 질문
안녕하세요탱크 모델에서 렌더링 할때는 주어진 vertex 위치가 로컬기준이라 root 기준으로 바꾸지 위해서 bonetransformation 을 곱해줬잖아요카츄진을 애니메이션 렌더링 할때 셰이더에서 (글로벌에서 로컬로 invGlobal) * (변환1 변환 2 변환3..) 이런식으로 곱해주는데 제가 이해하기로는 이러면 주어진 vertex가 글로벌 기준 버텍스인듯 한데 보통 이런 t자 모형의 skeletalmesh 는 주어지는 vertex position이 global 기준인가요? 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 기저사례 질문
안녕하세요 선생님 강의 잘 보고있습니다수업중 질문이 있는데요, 해당문제는 기저사례가if (k < 0) 과 if (index == 26) 이렇게 두부분이라고 이해했습니다.제가 여기서 가지는 질문은 총 두가지 인데 첫번째 질문은 왜 if (k < 0)일때 0을 반환하는지 이해하지 못하겠습니다.더이상 배울게 없는 경우에는 지금까지 만들어 놓은 mask 매개변수를 이용하여 count 함수를 호출을해서 ret 을 최대값으로 갱신해야하는것이 아닌가요?두번째 질문은 배우지 않고 넘아가는 경우에 ret 을 max 값으로갱신하는데 왜 이때 값을 갱신하는지 이해하지 못하겠습니다. 우선 함수를 int 형을 반환하는것이 아닌 void형으로 반환하는것으로 수정하여 제출하였습니다. 이렇게 하면 이해가 가는데, 혹시 위의 내용들을 조금더 깊게 설명해주실수 있으실까요?http://boj.kr/4925cb61cc264f87998b901fe8800e63
-
미해결홍정모의 따라하며 배우는 C++
생성자의 매개변수 유무와 괄호 유무
안녕하세요 16분 경 해당 캡처사진 코드 관련 질문드립니다. 18번째 줄의 생성자의 매개변수를 둘다 초기화 하시고int main 함수에서Fraction one_third (); 라고 쓰면 안된다고 하셨습니다'파라미터(매개변수)가 없기 때문에 괄호를 삭제해주어야한다' 라고 하셨는데이 경우는 생성자의 매개변수가 없는 것이 아니라 보내는 인자값이 없는 것 아닌가요?생성자에는 매개변수가 2개가 존재하는데..헷갈리네요 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-C 코드 질문있습니다
안녕하십니까 큰돌님강의 영상 보고 해설 코드를 이해한 다음 스스로 살짝 바꿔서 작성해봤는데 거의 유사한데 제대로 실행이 안 되는데 어디가 잘못 됐을까요 ?? 그리고 백준에서는 먼저 메모리 초과라고 뜨네요ㅜhttp://boj.kr/4e41e999182545c7bbe392897d16055d
-
미해결홍정모의 따라하며 배우는 C++
6:36 `void registerStudent(const Student & const student_input)`error
안녕하세요, const를 두번 넣으니까 아래와 같은 에러가 나옵니다. 이렇게 바꾸면 문제가 없습니다. const Student & student_inputconst가 2개 필요한 이유가 따로 있을까요?/usr/bin/clang++ -std=c++17 -fcolor-diagnostics -fansi-escape-codes -g /Users/user/Documents/cpp/10-3/10-3.cpp -o /Users/user/Documents/cpp/10-3/10-3 In file included from /Users/user/Documents/cpp/10-3/10-3.cpp:4: /Users/user/Documents/cpp/10-3/Lecture.h:26:40: error: 'const' qualifier may not be applied to a reference void assignTeacher(const Teacher & const teacher_input) ^ /Users/user/Documents/cpp/10-3/Lecture.h:31:42: error: 'const' qualifier may not be applied to a reference void registerStudent(const Student & const student_input)code# Lecture.h #pragma once #include <vector> #include "Student.h" #include "Teacher.h" class Lecture { private: std::string m_name; Teacher teacher; std::vector<Student> students; public: Lecture(const std::string & name_in) : m_name(name_in) {} ~Lecture() { // do NOT delete teacher // do NOT delete students } void assignTeacher(const Teacher & const teacher_input) { teacher = teacher_input; } void registerStudent(const Student & const student_input) { students.push_back(student_input); // vector에 넣는다 } void study() { std::cout << m_name << " Study " << std::endl << std::endl; for (auto & elem : students) // for each에서 ref로 받아야 값 변환 가능 elem.setIntel(elem.getIntel() + 1); } friend std::ostream & operator << (std::ostream & out, const Lecture & lecture) { out << "Lecture name : " << lecture.m_name << std::endl; out << lecture.teacher << std::endl; for (auto elem : lecture.students) out << elem << std::endl; return out; } };
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
생성자
질문 드리고자 합니다.하나의 생성자 멤버함수로 하나의 객체만 선언할 수 있나요? 만약 다른 객체를 선언하고 싶다면, 다른 생성자 멤버함수로 선언하면 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-E 질문드립니다.
4-E 직접 코딩한 링크입니다.http://boj.kr/1f336e6542f1478a96a0c31745c1196d 저는 비트연산자를 이용하긴 했는데입력 받으면서 1). 각 단어별 쓰인 알파벳 +1 ( 중복 x )2). 각 단어별 비트로 표현으로 전처리를 해준 후sort를 통해 가장 많이 이용한 알파벳 K 개 선정sort 된 알파벳으로 max_word 라는 K개 비트를 사용한 숫자를 만들고(word[i]&max_word)==word[i] 와 같을 경우 ret을 하나씩 올려줬습니다. 예제 및 추가 예제들은 다 맞는데 어디에서 틀린지 감이 안오는 것 같습니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - R
마지막 값 출력 때 '\n'을 빼먹고 안해서 1시간 정도 헤맸습니다... 문제에서 요구한 사항이 아닌 거 같아서 딱히 하진 않았는데 다른 문제를 풀 때에도 명시돼 있지 않더라도 혹시 모르니 하는 것이 나을까요??또한 문제에 명시돼 있진 않으나 이진트리라고 가정하고 풀긴 했는데 이런 것도 혹시 문제의 예시를 보고 추정하면 될까요??
-
미해결홍정모의 따라하며 배우는 C++
11분 코드 질문
안녕하세요 하기 코드 질문드립니다int sumTo(int sumto){ if (sumto <= 0) return 0; else if (sumto <= 1) return 1; else return sumTo(sumto - 1) + sumto; }에서 굵게 표시한if(sumto < = 1) return 1; 이 굳이 필요한 부분인가요?~return 0은 재귀함수 중단을 위해 꼭 필요한 것이란 걸 알겠습니다만~return 1은 어떤 이유에서 추가하셨는지 궁금해서 여쭤봅니다. 미리 답변 감사드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 P.42 질문
end()가 문자열의 마지막 요소 그 다음을 가리키는 거라고 하셨는데그럼 P.42에서 reverse()할 때도 reverse(a.begin(), a.end())가 아닌 reverse( a.begin(), (a.end()-1) )로 써도 문자열이 완전히 뒤집어 질 수 있지 않나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맞왜틀 질문
설명해주신대로 ret=0, d=0~100까지로 해서백준 예제입력을 넣어봤는데출력값이 계속 0이 뜹니다 ㅠㅠ..ret=1로 했을때는 출력값이 정상적으로 5가 뜨긴하는데 왜 ret=0을 넣었을 때 안되는건지 모르겠습니다.뭐가 문제인가요?#include <bits/stdc++.h> using namespace std; int n, h[101][101], visited[101][101], cnt, ret=0; const int dy[4] = {-1, 0, 1, 0}; const int dx[4] = {0, 1, 0, -1}; void dfs(int y, int x, int d){ visited[y][x] = 1; for(int i=0; i<4; i++){ int ny=y+dy[i]; int nx=x+dx[i]; if(ny<0 || ny>=n || nx<0 || nx>=n) continue; if(visited[ny][nx]) continue; if(h[ny][nx] <= d) continue; dfs(ny, nx, d); } return; } int main(){ cin >> n; for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ cin >> h[i][j]; } } for(int d=0; d<=100; d++){ cnt=0; fill(&visited[0][0], &visited[101][101], 0); for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ if(h[i][j] <= d) continue; if(visited[i][j]) continue; dfs(i, j, d); cnt++; } } ret = max(ret, cnt); } cout << ret; return 0; }
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
Shader Pass 질문드립니다
DIrectX 학습하면서 이 부분이 되게 충격적으로 다가왔습니다.편리성이 엄청난데 이 pass 라이브러리는 "FX11/Effects11d.lib"에서 기능이 제공이 되어 있는건가요? 아니면 루키스님이 직접 만드신 방법인가요?그리고 실제 엔진개발에서 많이 사용되는 라이브러리 인가요?마지막으로 hlsl과 fx의 차이를 검색해서 알아보니 fx는 조명효과 같은 곳에 사용한다는데 hlsl과 차이가 무엇인가요?항상 강의 감사하게 듣고있습니다 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[3_Q맞왜틀] 어디서 틀렸는지 잘 모르겠어요
http://boj.kr/2c94d34c79944ea3a6c763ef440ac650 예제는 맞는 것 같은데 (visited배열 출력해서 확인함) 제출 하면 틀렸다고 나오네요.. 왜그런지 잘 모르겠어요 ㅜㅜ저는 다음과 같이 코드를 짰습니다.입력받고gohome 함수에서cnt가 k와 같으면 ret++하고 returnny와 nx정의해서 범위 벗어나는지 확인, 방문했는지 확인, 입력받은 배열 값이 T인지 확인, cnt==k인데도 도착지가 집이 아닌지 확인위 조건들을 통과하면 방문하고 재귀함수 호출 , 방문기록 삭제도움 많이 받고있습니다 선생님 감사합니다!
-
미해결홍정모의 따라하며 배우는 C++
19.4 [14:04] std::lock_guard, std::scoped_lock 컴파일 오류
#include <iostream> #include <thread> #include <atomic> #include <mutex> #include <chrono> using namespace std; mutex mtx; int main() { int shared_memory(0); //atomic<int> shared_memory(0); auto count_func = [&]() { for (int i = 0; i < 1000; ++i) { this_thread::sleep_for(chrono::milliseconds(1)); //shared_memory++; //shared_memory.fetch_add(1); /*mtx.lock(); shared_memory++; mtx.unlock();*/ //std::lock_guard lock(mtx); //std::scoped_lock lock(mtx); shared_memory++; } }; thread t1 = thread(count_func); thread t2 = thread(count_func); thread t3 = thread(count_func); thread t4 = thread(count_func); t1.join(); t2.join(); t3.join(); t4.join(); cout << "After" << endl; cout << shared_memory << endl; return 0; } Debug 모드로 진행시 std::lock_guard랑 scoped_lock이 정상적으로 compile되고 작동이 되는데,Release 모드로 변경하니 해당 lock_guard는 missing template이 뜨고, scoped_lock은 member가 존재하지 않는다고 뜨는데어떤 점이 문제일까요?..교수님 강의에서는 Release 모드에서도 잘 작동하는 거로 보였습니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
[클래스 및 분할 컴파일 질문]undefined reference to
클래스를 헤더 파일(stock.h)와 func.cpp 파일에 분할해서 작성 후 컴파일 했는데 C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x74): undefined reference to `Stock::Stock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, float)'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0xac): undefined reference to `Stock::Stock()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0xfa): undefined reference to `Stock::show()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x107): undefined reference to `Stock::show()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x162): undefined reference to `Stock::Stock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, float)'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x185): undefined reference to `Stock::~Stock()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x1ba): undefined reference to `Stock::show()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x1cc): undefined reference to `Stock::~Stock()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x1d9): undefined reference to `Stock::~Stock()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x20d): undefined reference to `Stock::~Stock()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x23a): undefined reference to `Stock::~Stock()'C:\Users\PC-202~1\AppData\Local\Temp\ccEPMb0b.o:practice.cpp:(.text+0x24b): undefined reference to `Stock::~Stock()'collect2.exe: error: ld returned 1 exit status이런 오류가 발생했습니다.인터넷을 찾아봐도 잘 모르겠어서 원인이 무엇인지 질문드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 데이터 저장
http://boj.kr/1c07c3f4f76347e791816ea1d051396b 위의 코드에서 5 -1 0 0 1 1 0 다음과 같은 테스트케이스를 넣어주면 deleteChildren()에서 1번 노드가 들어갈때 데이터가 온전히 전달이 안됩니다... 확인해보니 1번 노드에서는 자식이 2개여야 하는데 0개로 나옵니다. deleteChildren를 호출하기전에는 2개로 잘 나오는데 이유가 뭘까요..? 아래 사진은 deleteChildren을 호출하기전 데이터 사진입니다. deleteChildren(node& nd) 으로 해도 데이터가 안넘어가지더라구요... 우선은 node가 아닌 int idx를 받아 함수 안에서 tree[idx] 이렇게 직접 찾게 바꿔서 해결은 했습니다만 데이터가 제대로 안넘어가는 이유가 너무 궁금합니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A map 관련 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님, 제가 map<int, vector<vector<int>>> ret_v; 의 형태에 대해 이해가 잘 안됩니당 강의에서 설명해주신대로 벡터의 벡터를 이용하는것 까지는 이해를 했습니다.근데 출력부분이 왜for(int a : ret_v[ret][0]){ cout << a << " "; } 이렇게 작성 되는지가 이해가 안가네용 ... 제 생각엔 ret_v[ret]면 될거같은데 [0]이 왜 있고 무슨의미인지 이해가 안되네요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 접근 방식
안녕하세요,, 선생님문제 보자마자 bog2636에 있는 치즈 문제랑 똑같다고 생각해서, 같은 로직으로 풀고자 했습니다. dfs를 두개 만들어서 하나는 백조가 백조를 찾아가는 로직, 하나는 얼음을 녹이는 로직. 단순히 2개의 dfs를 만들어서 구현하고자 했습니다. 아직 미완성 코드이긴하지만, 이렇게 푸는 방식이 맞는지 궁금합니다 .. http://boj.kr/5323a9d789cc4883a53cdc463fedb890
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
push_back, 이동생성자 질문
class Person { public: Person(string name) { this->name = name; cout << "기본 생성자 " << name << endl; } Person(const Person& p) { this->name = p.name; cout << "복사 생성자 " << this->name << endl; } Person(Person&& p) noexcept { this->name = p.name; cout << "이동 생성자 " << p.name << endl; } ~Person() { cout << "소멸자 호출 " << this->name << endl; } public: void operator = (Person&& p) { cout << "이동 대입 " << p.name << endl; } void operator = (const Person& p) { cout << "복사 대입 " << p.name << endl; } public: string name; }; std::vector<Person> v; int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); v.push_back(Person("Kim")); v.push_back(Person("Lee")); Person p1("NY"); v.push_back(p1); return 0; } 위처럼 실행시 Kim에 대한 임시객체 생성 -> vector에 넣을 데이터 이동 생성자로 생성 -> 임시객체 해제(소멸)순으로 진행될라 생각하여 디버깅 한 결과 제 생각과 맞은듯 하였습니다.위처럼 생성자들이 호출이 되었고 그다음에 "Lee"임시객체를 생성하고 push_back하는 경우 똑같은 과정대로 push_back될거같았는데 그러지가 않고위처럼 기본생성자 호출 (임시객체) -> 이동생성자 호출 (벡터에 넣을 데이터 noexcept최적화 ) -> 이동생성자 호출?...(여기서 임시객체에 대한 소멸자가 호출되어야 한다고 생각했습니다)여기서 부터 멘붕이 왔는데 제가 지금 std::vector의 push_back멤버 함수의 동작방식을 제대로 알지 못하는 것인지와왜 Lee에 대한 이동생성자가 호출되고나서 Kim이라는 변수를 가지는 이동생성자가 한번 더 호출되는지 모르겠습니다 그것도 Person("Lee")를 v에 push_back하는 상황에서요..