묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨삼각형의 실전! CMake 초급
혹시 강의에 나오는 예제 코드를 받을 수 있는건가요?
섹션 2의 모던 CMake 쪽 강의를 듣고 있습니다.제가 놓친거 같은데 강의에서 실행하는 예제 코드 들은 어디서 다운 받을 수 있는건가요?아니면 제가 비슷하게 만들고 테스트를 해야 되는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
입력받는 부분에서 질문이있습니다
큰돌님의 풀이에서 value와 합연산을 하는 부분이 이해가 잘 안되어서 조금 고민을 해봤는데 결국 idx번째 비트 켜기와 같다고 생각했습니다.비트마스킹 강의에서 idx번째 비트 켜기를void idx번째비트켜기() { int S = 18; int idx = 0; S |= (1 << idx); cout << S << '\n'; }이렇게 알려주셨는데요.이를 사용해서 아래와 같이 입력을 받아도 무방한가요? 출력해봤을 땐 똑같이 나오는데 풀이를 value를 써서 하신 이유가 따로 있는지 궁금해서 질문남깁니다.for (int i = 1; i < n + 1; i++) { cin >> s; for (int j = 0; j < s.size(); j++){ if (s[j] == 'T') a[i] |= (1 << j); } cout << a[i] << '\n'; }
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
질문 드립니다
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstring> #define SIZE 20 using namespace std; int main() { char animal[SIZE]; char* ps; cout << "동물 이름을 입력하십시오.\n"; cin >> animal; ps = new char[strlen(animal) +1]; strcpy(ps, animal); cout << "입력하신 동물 이름을 복사하였습니다." << endl; cout << "입력하신 동물 이름은 " << animal << "이고, 그 주소는 " << (int*)animal << " 입니다." << endl; cout << "복사된 동물 이름은 " << ps << "이고, 그 주소는 " << (int*)ps << " 입니다." << endl; delete[] ps; return 0; }이제는 #include <cstring> 을 추가해야만 작성해주신 코드가 동작하는게 보여지는데 헤더가 기본적으로 가지고 있는 내용이 시간이 지나면서 바뀐걸까요? 아니면 C++ 업데이트를 제가 잘못한건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
연결리스트의 삽입 및 삭제
대학교에서 자료구조를 배우고 있는 학생입니다!연결리스트의 삽입 및 삭제 시간 복잡도 관련해서 질문이 있습니다.Q. 왜 연결리스트의 삽입과 삭제는 O(1)인가요? 라는 내용에서왜 이미 노드에 접근했다고 상정하고 시간복잡도를 계산하는지 이해가 가지 않습니다. 제 이해로는 노드에 접근하는 과정까지 시간복잡도 계산에 포함시켜야 한다고 생각하는데 자세한 설명을 듣고싶습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-D 질문
안녕하세요 큰돌 님.7-D를 풀던 도중 메모이제이션 부분에서 질문드립니다.저는 메모이제이션을 2차원 배열로 하고자 했는데요,제가 생각하기에 나무가 2개뿐이기에 이동 횟수에 따라 나무의 위치를 특정할 수 있기 때문에"1번 움직이면 -> 2번 나무, 2번 움직이면 -> 1번 나무"와 같이 이동 횟수와 나머지 연산을 통해 '현재 위치'를 메모이제이션 하지 않아도 된다는 생각이 들었습니다.때문에 이동 횟수와 현재 시간만 메모이제이션 하고자 했습니다. 혹시 이런 식의 접근으로는 풀 수가 없는 것일까요?제가 제출한 코드도 첨부 드립니다.http://boj.kr/7d0a67eaf7b8428e912f596c29a971f1
-
미해결홍정모의 따라하며 배우는 C++
STL 반복자에서 end() 가리키는 게 왜 마지막 요소가 아닌 마지막 요소 다음을 가리키는지에 대해서!
이에 대해서 chat gpt 에 물어봤는데 "Half-Open Range의 중요성이 반복자 범위는 "half-open" 범위로 알려져 있습니다. 즉, 시작은 포함되지만 종료는 포함되지 않습니다([begin, end)). 이러한 설계는 다음과 같은 이유로 안전성과 효율성을 제공합니다:범위 초과 방지:end()가 마지막 요소의 바로 다음을 가리키므로, 반복 과정에서 마지막 요소를 처리한 후 반복자를 한 번 더 증가시키면 end()를 가리키게 됩니다. 이 위치는 실제 데이터를 포함하지 않으며, 반복자가 데이터를 벗어난 상태가 되지 않습니다. 따라서 루프에서 it != vec.end() 조건을 검사할 때 정확히 루프가 종료되며, 이는 범위를 초과하여 데이터에 접근하는 일이 없도록 합니다.일관된 로직:모든 표준 알고리즘과 컨테이너 연산은 이 half-open 패턴을 기대합니다. 이로 인해 개발자는 특별한 경우를 고려하지 않고도 일관된 방식으로 코드를 작성할 수 있습니다. 이는 오류 가능성을 줄이고 코드의 가독성을 높여줍니다. "이렇게 답을 해줬습니다. end()가 마지막 요소를 직접 가리키는 경우 저는 오히려 범위 초과 방지에 더 도움이 된다고 생각하기에 이 설명이 이해가 잘 안 됩니다. 또 chat gpt에서"std::vector<int> vec = {1, 2, 3};auto it = vec.begin(); // it는 Index 0을 가리킵니다 (Element: 1) 여기에서 end()가 마지막 요소를 직접 가리키는 경우 (비표준, 가상 시나리오)이 경우를 가정하여, vec.end()가 Index 2, 즉 3을 가리킨다고 가정해 봅시다.반복 실행 과정:it는 1을 가리킵니다. it != vec.end()는 참입니다. 요소 1을 출력하고 ++it.it는 2를 가리킵니다. it != vec.end()는 참입니다. 요소 2를 출력하고 ++it.it는 3을 가리킵니다. it != vec.end()는 참입니다. 요소 3을 출력하고 ++it. 여기서 문제가 발생합니다. it를 한 번 더 증가시키면, it는 vec.end()를 넘어서 Index 3으로 이동하게 되고, 이 위치는 벡터의 범위를 벗어난 위치입니다. 이 시점에서 다음의 it != vec.end() 검사는 undefined behavior를 초래할 수 있습니다, 왜냐하면 it가 벡터의 유효 범위를 벗어났기 때문입니다. "이렇게 말을 했는데 이해가 잘 되지 않습니다. end()가 마지막 요소를 직접 가리키는 경우 it가 3을 가리킬 때 it != vec.end() 는 오히려 거짓이 되고, 3을 출력하기 전에 반복 실행을 멈추기 때문에 오히려 범위 밖으로 나갈 위험이 적다고 생각합니다. (물론 여기서는 3을 출력하지 않기 때문에 잘못된 것이지만). 그래서 chat gpt 가 마지막 요소 다음을 가리키는 게 더 안전하다고 한 이유를 잘 모르겠습니다. 오히려 end()는 마지막 요소 다음을 가리키는 반복자이므로 쓰레기 값을 가리키는 이상한 녀석이라는 생각이 듭니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문있습니다!
안녕하세요 선생님! 강의 보기 전에 직접 풀어봤는데요, 테스트 케이스도 정답대로 잘나오지만 백준에서는 틀렸다고 나옵니다 ㅠㅠ 파일 개수 입력패턴 입력파일 입력패턴의 첫 번째/마지막 문자와 파일의 첫 번째/마지막 문자가 같다면 DA출력, 아니면 NE출력몇 번을 확인해봐도 설계에 문제는 없어보이는데요, 어디가 틀려서 오답처리가 되는걸까요? http://boj.kr/8b7b4a2668c0446a92b0c459e4c67c77 #include <iostream>using namespace std;int cnt;string pattern;string input[100];int main(){cin >> cnt;cin >> pattern;for (int i = 0; i < cnt; i++)cin >> input[i];for (int i = 0; i < cnt; i++){if (pattern[0] == input[i][0] && pattern[pattern.size() - 1] == input[i][input[i].size() - 1])cout << "DA" << endl;elsecout << "NE" << endl;}return 0;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
a.cpp 세팅 ! (m1 사용 중)
저는 맥북 m1 사용 중입니다.a.cpp 세팅 관련해서 자꾸 안 돼서 질문 남겨요! 현재 저는 cd /usr/local/include 여기서 했다가 안 돼서cd /Library/Developer/CommandLineTools/usr/include mkdir bits 또 여기에서 다시 했습니다! 그럼에도 되지 않아요.. ❯ g++ -std=c++14 -Wall a.cpp -o test.outIn file included from a.cpp:1:/Library/Developer/CommandLineTools/usr/include/bits/stdc++.h:22:1: error: expected unqualified-id14^/Library/Developer/CommandLineTools/usr/include/bits/stdc++.h:70:1: error: expected unqualified-id15^2 errors generated. 이렇게 나와요.아래는 제가 터미널에서 확인한 겁니다!❯ sudo vi stdc++.h Password: ❯ cat stdc++.h #ifndef _GLIBCXX_NO_ASSERT #include <cassert> #endif #include <cctype> #include <cerrno> #include <cfloat> #include <ciso646> #include <climits> #include <clocale> #include <cmath> #include <csetjmp> #include <csignal> #include <cstdarg> #include <cstddef> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #if __cplusplus >= 201103L #include <ccomplex> #include <cfenv> #include <cinttypes> #include <cstdbool> #include <cstdint> #include <ctgmath> #include <cwchar> #include <cwctype> #endif // C++ #include <algorithm> #include <bitset> #include <complex> #include <deque> #include <exception> #include <fstream> #include <functional> #include <iomanip> #include <ios> #include <iosfwd> #include <iostream> #include <istream> #include <iterator> #include <limits> #include <list> #include <locale> #include <map> #include <memory> #include <new> #include <numeric> #include <ostream> #include <queue> #include <set> #include <sstream> #include <stack> #include <stdexcept> #include <streambuf> #include <string> #include <typeinfo> #include <utility> #include <valarray> #include <vector> #if __cplusplus >= 201103L #include <array> #include <atomic> #include <chrono> #include <condition_variable> #include <forward_list> #include <future> #include <initializer_list> #include <mutex> #include <random> #include <ratio> #include <regex> #include <scoped_allocator> #include <system_error> #include <thread> #include <tuple> #include <typeindex> #include <type_traits> #include <unordered_map> #include <unordered_set> #endif
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - I 질문있습니다
안녕하세요 큰돌님강의 잘 듣고 있습니다.3 - I (17071번)를 푸는데 bfs의 경계조건을 바로 밑에 코드에서for(int next : {here + 1, here - 1, here * 2}){ if(next < 0 || next > max_n || visited[turn % 2][next]) continue; 아래와같이 바꾸면 런타임 에러 (OutOfBounds)가 발생하는데 그 이유가 궁금합니다.for(int next : {here + 1, here - 1, here * 2}){ if(visited[turn % 2][next] || next < 0 || next > max_n) continue;
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
정답 코드와 거의 비슷한데 틀렸습니다
https://www.acmicpc.net/source/76745635 정답 코드에서는 어떤 정점에 도착할때마다 최단거리일경우 +1을 해서 출력하는데 저는 정답 코드에 도착할때만 +1을 하도록 만들었습니다. 이부분에서 반례가 있을까요?아니면 정답코드에서 최대범위가 200000인 이유가 있나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-B Counting Star 질문있습니다!
안녕하세요 선생님 🙂 저번 질문에서 수강평 작성해달라고 말씀해주셨었는데요, 수강평은 강의를 모두 들은 후에 작성하는 것이 맞을 것 같아서 나중에 작성하겠습니다^^오늘은 Counting Star 질문이 있습니다. 강의듣기 전에 먼저 풀어봤는데요, 결과 값은 정확히 나오고 있으며 선생님의 풀이와 차이가 있다면array를 vector로 사용char가 아닌 int로 for문을 사용이렇게 2가지의 차이 밖에 없는 것으로 보이지만 백준에 제출하면 자꾸 오답으로 나옵니다 ㅠㅠ 아래는 제가 한 풀이 방식입니다. 의심되는 부분은 for문 안의 if (S[i] == NULL) break; 이 구문인데요, 문자열의 끝이 공백문자열이다보니 이 구문을 통해 공백문자열을 만난다면 break를 통해 반복문을 빠져나오도록 구현하였습니다. 어떤 문제가 있길래 자꾸 오답처리가 되는걸까요? #include <iostream>#include <vector>using namespace std;int main(){ string S; cin >> S; vector<int> vec(26); for (int i = 0; i < 26; i++) { if (S[i] == NULL) break; vec[(int)S[i] - 97]++; } for (auto i : vec) cout << i << " "; return 0;}
-
해결됨[쥬신게임아카데미 버거쌤] 완전 초보자를 위한 게임 C++
공부방법
클래스 전까진 신나게(?) 진행하다가, 동적할당, 구조체(포인터 변수사용),클래스..진입하면서,복습이 본 공부보다 더 오래, 심지어 오락가락하는 중입니다. 전 강의가 20강이라 짧긴 하고,입문용이긴 한데,.. 갖고있는 c++책의 예제를 보니, 연습용으로 풀긴,아는거보다 모르는게 좀더 많은거같고.. 예제를 만들어 복습을 하는 방법밖엔 없지만, .. 공부방향을 가이드 해주실수있나요?글고, 입문다음엔 기초이거나,중급일거같은데. 언제 나오나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 문제 질문
안녕하세요, 큰돌님 7-v 질문 드립니다. 제가 작성한 코드가테스트 케이스는 통과하는데 틀리는 이유를 모르겠습니다.이유 좀 알 수 있을까요ㅠhttp://boj.kr/9d9a4a384f4441e7aa92861ac25e594f
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
LIS 예시 문제 boj 11053에서 lower_bound() 질문드립니다.
안녕하세요 선생님lower_bound()를 사용하는 방법으로 boj 11053을 풀면 답은 맞지만 로직 흐름이 맞지 않는 테스트 케이스가 있습니다. 410 20 30 11위 input을 입력하면 출력으로10 0 0 0 10 20 0 0 10 20 30 0 10 11 30 0 이렇게 나옵니다. 이러한 경우를 고려하지 않아도 괜찮나요?
-
미해결홍정모의 따라하며 배우는 C++
r-value reference와 std::move
안녕하세요! 항상 수고 많으십니다.r-value 레퍼런스와 move 함수에 대해 궁금한 것이 몇 있는데 나름 찾아봤지만 해소되지않은 부분이 있어 이렇게 여쭤봅니다. 아래와 같이 &&를 통해 r-value를 받고있는데요,{ int && ref = 5; cout << ref << endl; //ok ref = 3; // ok cout << &ref << endl; //ok } { ref; //error, 정의된 scope 밖 }원래 r-value이던 5는 잠시 레지스터든 어디에 임시 생성됐다가 표현식(;)이 끝나면 바로 사라질 예정이었지만l-value로 바뀌어 메모리에 직접 저장되는 형식으로 되어,l-value처럼 작동한다는 것이 적절한 이해인가요?(scope안에서는 계속 데이터 유효, scope 밖은 자동소멸 등..) move함수에 대해서, move는 인자로 들어간 것을 r-value로 리턴하여 소유권을 이전, 및 자신의 소유권은 박탈해줍니다.다음의 예시에서,string&& s가 r-value인 abc를 받고있는데요,이때 b는 move(s)를 통해 abc에 대한 소유권을 이전받고,s는 소유권을 박탈당해서 코드 실행시 다음의 결과가 나옵니다.b는 abc를 정상출력,s는 소유권을 박탈당해 아무것도 출력안함.즉 move가 소유권 이전, 박탈을 잘 해주는데요,한편, (15.4강 2:54부근)에서 가운데를 보면 res1이 move를 통해 r-value로 리턴되고 res2로 소유권(포인팅 주소) 이전 및 자신은 박탈 되는 것 처럼 보입니다.명확히 확인해보기 위해 저 주황줄 코드가 호출하는 생성자에 아래와 같이res1의 m_ptr의 주소를 찍어봤는데와 같이 널포인터(소유권상실)가 아닌 가지고 있던 주소를 계속 가지고 있습니다. 저희가 50번째 줄에 널포인터를 직접 넣기 전에도 소유권 박탈은 안 된 모습인데 move를 통해 소유권이 상실되는 string케이스와는 대비가 되는 모습입니다.string과 달리 사용자 정의 자료형은 이전이나 박탈은 사용자가 직접 정의 해줘야한다는 시각으로 이해하면 될까요?그리고 move를 통해 r-value로 바뀐다고 하는데 그렇다면 바로 위의 예시에서 res1는 r-value가 돼서 언뜻 보면 26번줄 이후로는 소멸될 것 같지만AutoPtr클래스인 res1에 테스트 멤버함수를 만들어 호출해봐도 정상적으로 작동이 됩니다. (i'am --> i'm 오타입니다)--> res1 test 멤버함수 --> 32번째 줄 test 멤버함수 호출이것을 토대로 생각해보면 res1에 대해 res1자체를 r-value로 수정하는 것이 아니라, 자신은 변경되는 것이 아닌 res1를 r-value로 가공한 걸 잽싸게 넘겨주고 자신은 바뀌는 것 없이 끝인 개념인가요?의 경우위에 해당하는 r-value 복사생성자로 이동합니다.이렇게 얕은복사가 진행됩니다.----------------------------------------------------이번에는 위에 move함수를 뺐는데요, 그러면에 해당하는 l-value복사생성자가 호출됩니다.실제로 30번 줄에 의해와 같은 깊은복사가 일어나게 됩니다.그래서 r-value를 써서 소유권 이전 등으로 얕은복사로 리소스를 적게쓰자가 지향점이겠으나그냥 단순히 아까 깊은복사가 일어나는 l-value복사생성자의 내용을처럼 그냥 얕은복사가 일어나도록 하는 코드로 갈아끼우면 되는 것 아닌가요?물론 저렇게는 오류가 나서처럼 const를 빼주면 정상작동합니다.위 실행결과 -->결과도 의도하는 얕은복사가 이루어지는데이런 방법이 왜 잘못된 건지 알고싶습니다.질문글이 좀 많이 길어 죄송한 면이 있네요.항상 친절한 답변 감사합니다.감사합니다.3번 질문에 해당하는 코드입니다.<main.cpp>#include "AutoPtr.h" #include "Resource.h" #include <iostream> using namespace std; template<class T> void MySwap(T& a, T& b) { //T tmp = a; //a = b; //b = tmp; T tmp{ std::move(a) }; a = std::move(b); b = std::move(tmp); } int main() { { AutoPtr<Resource> res1(new Resource(1000000)); cout << res1.m_ptr << endl; AutoPtr<Resource> res2 = res1; cout << res1.m_ptr << endl; cout << res2.m_ptr << endl; } return 0; } <AutoPtr.h>#pragma once #include <iostream> using namespace std; template<class T> class AutoPtr { public: T* m_ptr; public: AutoPtr(T* ptr = nullptr) : m_ptr(ptr) { std::cout << "AutoPtr default constructor " << std::endl; } ~AutoPtr() { std::cout << "AutoPtr destructor " << std::endl; if (m_ptr != nullptr) delete m_ptr; } AutoPtr(AutoPtr& a) : m_ptr(a.m_ptr) { a.m_ptr = nullptr; // really necessary? std::cout << "AutoPtr move constructor " << std::endl; } AutoPtr& operator = (const AutoPtr& a) { std::cout << "AutoPTr copy assignment " << std::endl; if (&a == this) // prevent self-assignment return *this; if (m_ptr != nullptr) delete m_ptr; // deep copy m_ptr = new T; *m_ptr = *a.m_ptr; return *this; } AutoPtr(AutoPtr&& a) : m_ptr(a.m_ptr) { a.m_ptr = nullptr; // really necessary? 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; //shallow copy m_ptr = a.m_ptr; a.m_ptr = nullptr; return *this; } void test() { std::cout << m_ptr << " i'am here " << std::endl; } T& operator*() const { return *m_ptr; } T* operator->() const { return m_ptr; } bool isNull() const { return m_ptr == nullptr; } };<Resource.h>#pragma once #include <iostream> class Resource { //private: public: int* m_data = nullptr; unsigned m_length = 0; public: Resource() { std::cout << "Resource constructed" << std::endl; } Resource(unsigned length) { std::cout << "Resource length constructed" << std::endl; this->m_data = new int[length]; this->m_length = length; } Resource(const Resource& res) { std::cout << "Resource copy constructed" << std::endl; Resource(res.m_length); for (unsigned i = 0; i < m_length; ++i) m_data[i] = res.m_data[i]; } ~Resource() { std::cout << "Resource destroyed" << std::endl; if (m_data != nullptr) delete[] m_data; } Resource& operator = (Resource& res) { std::cout << "Resource copy assignment" << std::endl; if (&res == this) return *this; if (this->m_data != nullptr) delete[] m_data; m_length = res.m_length; m_data = new int[m_length]; for (unsigned i = 0; i < m_length; ++i) m_data[i] = res.m_data[i]; return *this; } void print() { for (unsigned i = 0; i < m_length; ++i) std::cout << m_data[i] << " "; std::cout << std::endl; } void setAll(const int& v) { for (unsigned i = 0; i < m_length; ++i) m_data[i] = v; } };
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 개념 #9 누적합 질문있습니다!
안녕하세요 선생님 🙂 쉽게 설명해주셔서 항상 감사합니다 ^^ 다름이 아니라 누적합 개념강의에서 선생님께서는 아래의 방식으로 설명해주셨는데요,0번 인덱스는 비워둠psum배열을 전역으로 설정하여 값들을 전부 0으로 초기화psum[1]부터 psum[i - 1] + a[i]를 하시면서 누적합을 계산 아래 방식이 효율적인지 궁금합니다.0번 인덱스 사용psum배열에 a배열을 복사psum[0]은 그대로 둠psum[1]부터 psum[i] + psum[i - 1] 아래는 선생님께서 설명해주신 승철이가 뇌를 잃어버린 문제에 대한 제 풀이의 전체 코드입니다. #include <iostream>#include <vector>#include <iterator>using namespace std;#define N 8#define M 3int A, B;int temp[N];int main(){ int arr[N] = { 1, 2, 3, 4, 5, 6, 7, 8 }; copy(begin(arr), end(arr), begin(temp)); for (int i = 1; i < N; i++) temp[i] += temp[i - 1]; for (int i = 0; i < M; i++) { cin >> A >> B; cout << temp[B] - temp[A - 1] << endl; } return 0;}
-
미해결[게임 프로그래머 도약반] DirectX11 입문
애니메이션에 글로벌로 이동할떄 제가이해한게맞는지요
뼈대의 로컬 행렬에 애니메이션변환행렬을 곱하면 글로벌로가는게 제가 이해하는게맞나요?제가 작업할때 자꾸 뼈의 글로벌행렬에 애니메이션을 곱해서 잘안되었는데 이제보니 로컬행렬에 애니메이션만 곱해줘도 알아서 글로벌로 이동하는 형식인것같더라구용 뼈에 부모행렬을 곱해준것이아닌 로컬행렬에 그냥 애니메이션행렬만 곱해주면 알아서 글로벌로 가는거 맞나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 어디서 틀렸는지 궁금합니다.
http://boj.kr/7effb2a3b4f44d839abcd6ebb1898979 1. 비트마스킹을 이용한 조합 구하기.2. 최소 영양소를 만족하는 조합 걸러내기.3. 그 중 최소 가격 갱신하기.4. 그때의 음식 인덱스 모으기.순으로 풀어갔는데 4에서 막혔습니다. 왜 틀린걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이 코드가 왜 틀렸는지 궁금합니다
일단 오류를 찾아서 고쳐 정답이 맞긴 했습니다.그런데 아무리 봐도 이해가 안돼서 질문글을 남깁니다.고친부분은 dfs함수에 ret을 전역변수가 아닌 지역변수로 바꾼건데 전역변수로 되어있다해도 함수 시작시 초기화를 해주는데 의미가 있나요? https://www.acmicpc.net/source/76553884
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 질문
안녕하세요 강사님 해당 문제를 강사님과 동일한 방법으로 푸는데 배열 a가 [100][100]이면 틀렸다고 나오더라구요입력은 s를 통해 받고 저장은 a에다 해서 버퍼 문제가 없을거 같은데 왜 틀리는건가요….?