묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 맞왜틀 질문있습니다!
http://boj.kr/a166d070b8e646418f096a93c5b4286a강의를 보기 전 dfs를 활용해서 0을 쭉 탐사하는데 1로 막혔을 때 그 1의 좌표를 벡터에 저장하여 탐색 후 지우고 다시 탐색하는 방식을 반복한 횟수를 구해서 풀어봤는데 왜 틀린 지를 모르겠습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-I 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님 문제에서 scanf와 printf로 사용하셨는데 cin,cout를 사용안한 이유가 있으신가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다.
이 문제와 관련된 질문은 아니지만 지금 5-H 풀 차례라 여기다 남깁니다..!https://www.acmicpc.net/problem/1009이 문제를http://boj.kr/44be1cd3cb714dc9bbcb94e1d166758c이렇게 풀었는데요문제에서 테스트갯수인 T의 최댓값을 안알려주는데 이럴 경우에는 무식하게 풀어도 되는지 어떻게 아나요..?b가 최대 백만번 반복하는데 만약 T의 값이 1000을 넘어 버리면 1억번의 연산이 넘어버리는데 T의 값이 없어서 무식하게 풀어도 되는지 판단이 불가합니다. 그럴 땐 어떻게 생각을 해야되는지 궁금합니다.T는 빼고 생각해도 되는걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-G 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.문제 자체를 이해를 못했네요ㅜㅜ2. 만약, 위에서 자른 막대의 절반 중 하나를 버리고 남아있는 막대의 길이의 합이 X보다 크거나 같다면, 위에서 자른 막대의 절반 중 하나를 버린다. 2번 조건에서 위에서 자른 막대의 절반 중 하나를 버린다는 뜻이64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1 에서 16 8을 더했을때 23을 넘어가니까 위에서 자른 절반 중 하나를 버리면 16을 버리는게 아닌가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4 - J 맞왜틀 질문있습니다.
처음에는 감조차 못잡다가, 가로세로 힌트를 듣고 어떻게 구현을 하긴 했습니다.그런데 Test Case는 전부 맞는데 제출을 했을때 0퍼에서 틀려버립니다.이유를 모르겠습니다...http://boj.kr/edf18c4b49134e13b67c75f324ea9dc9감사합니다.
-
해결됨C개발자를 위한 최소한의 C++
인스턴스의 개념에 대해 int a(3), int(5) 예시를 바탕으로한 질문입니다.
안녕하세요, 강사님.int a(3)은 인트형식(혹은 클래스)의 인스턴스 a를 3으로 초기화 한것이고, 상수 5가 int(5) 인트형식(클래스)의 인스턴스 5라고 한다면,Q1 인트형식의 상수들은 다 인스턴스인 것인가요?Q2 int(5)라는건 식별자가 없는 인스턴스 인거고 가령, int(5) + int(3) == int(7) 이렇게 기술했을때 참이 되나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 비트마스킹의 허우적 거리고 있습니다. 예시를 들고 계신 부분(영상 3:19초)에서 abc 를 비트마스킹한 값을 배열에 저장해뒀다가 완전 탐색하면서 비트마스킹(7) == 경우의 수?(7)이 같으면 이것은 가능한 경우의 수라는 뜻인가요?? 1주차 2주차 3주차는 시간이 지나도 다르게 풀기도하고 하는데 이 비트마스킹은 벽을 느끼고 있습니다. 어찌해야 될가 답답하네요 ㅠㅠ
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
GameFeatureAction_AddInput #1 강의를 수강한 후 궁금한 점이 생겼습니다.
안녕하세요 언제나 좋은 배움의 기회를 제공해주셔서 감사드립니다.특히 지금 수강하고 있는 Lyra 클론 코딩을 통해 모범적이고 체계적인 언리얼 엔진 코드 구조를 배울 수 있어 너무 기쁩니다.GameFeatureAction_AddInput #1 를 수강한 후에 제 나름대로 엔진 Subsystem을 사용하는 이유를 아래와 같이 정리하였습니다.혹시 틀린 부분이 있는지 궁금합니다. 첫번째로, GameFeature 플러그인 별로 생성된 GameFeatureSubsystem이 자신의 플러그인의 Action을 활성화하는데GameFeature 플러그인끼리의 전환이 빈번한 상황에서 이전에 사용한 플러그인이 비활성화되면 해당 플러그인의 SubSystem도 비활성화되고 Action 역시 비활성화된다.이런 경우에 FGameFeatureActivatingContext는 비활성화된 Action을 참조하게 되므로 문제가 발생한다.두번째로, FGameFeatureActivatingContext는 플러그인마다 존재하므로 모든 플러그인에 대해 바인딩을 할 수 없으므로 EngineSubsystem의 Context를 사용하는 것이 합리적이다. 위와 같이 정리하였는데 틀린 부분이 있는지 알고 싶습니다.다시한번 언제나 좋은 배움의 기회를 제공해주셔서 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4 - B 질문있습니다.
다행히 강의를 듣고 문제를 풀긴 했습니다.하지만 하나의 의문이 풀리지 않아 질문을 올려봅니다. 이 문제의 요점은 다음과 같다고 저는 생각합니다.1. 결론적으로 우리가 보고싶은것은 BF를 통해 모든 행과 열을 순회하면서 뒤집을 때의 결과를 체크하고 최소값을 구하는 것이다. 하지만 이것은 2^40이기에 시간범위를 넘어선다.2. 그러므로 2^40을 피하기 위해 모든 행들을 순회하면서 뒤집은 한 다음, 모든 열을 뒤집는 대신 T가 많은 열만 뒤집음으로서, 2^20 * 2^20 대신, 2^20 + @로 줄일 수 있다.그런데 이렇게 할거면 행 역시 완전탐색인 2^20을 피하기 위해 T가 많은 행만 뒤집을 수 있지 않을까 라는 생각이 계속해서 드네요. T가 많은 행 만을 뒤집었을때 답이 틀리게 나오는걸 보면 분명 무슨 이유가 있을건데, 반례가 떠오르지 않고 찝찝해서, 행과 열 둘다 T가 많은 것만 뒤집었을때 답이 틀리는 원인이 궁금해 질문을 올려봅니다.>>간단하게 생각하시면 됩니다.-> THT 라는 상황을 가정해볼게요.이 열 1, 2, 3 열에 대해 뒤집는 모든 경우의 수가 끝났습니다.이제 경우의 수는 이 행 -> 을 뒤집느냐. 아니면 안뒤집느냐. 라는 경우의 수밖에 없죠? 이 때 어떤 경우의 수가 최적의 수일까요?뒷면이 위를 향하는 동전 개수를 최소로 만드는 것이 가장 최적의 수 아닐까요?커뮤니티를 봤을 때 비슷한 질문에서 이런 답을 보았는데 이걸 읽어도 이해가 안되네요ㅠㅠ. 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-K 질문있습니다.
http://boj.kr/7606eba320de41679c31fffb9ff36d31이 코드는 맞은 코드이고http://boj.kr/44198150718f45fbaa3c3bee07710833이 코드는 틀린 코드입니다. 두 코드에서 다른 부분이라고는 58번줄 if문에서 "n - m == 1" 이라는 조건이 들어가냐 마냐의 차이인데 저러한 조건이 없어도 모든 노드가 연결되기 위해서는 당연히 n - m == 1 조건이 만족되지 않나요?만족하지 않는다면 애초에 모든 노드가 연결 안되지 않나요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
강의 내용 문의드립니다.
수강 이제 막 시작했는데요섹션1부터18까지의 수업과 섹션19는 강사분만 다르고 내용은 같다고 생각하면 될까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4 - A 질문 있습니다.
비트 마스킹, 정답이 없을 시 -1 처리, 같은 값을 가진 결과들끼리의 정렬, 최대 최소 범위 지정, 까지 했는데 8%에서 막혀 질문을 올려봅니다... http://boj.kr/879fef56c4584e6a85f2670b5166dd11 감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
예외 클래스 상속 관련 다른 예제 코드 확인 부탁 드립니다.
교수님의 강의를 보고 선 정리를 하는 과정에서 chat gpt를 이용해서 새로운 예제를 같이 공부하고 있습니다. 교수님의 코드에서는 ArrayException 객체를 throw하는 과정에서 메모리 문제가 발생하지 않고 부모 객체로 catch하여ObjectSilce 문제를 확인을 할 수 있었는데요.chat gpt가 알려준 예제(예제 클래스 상속으로 인한 Object Slice 문제)#include <iostream> #include <string> // 사용자 정의 예외의 기본 클래스 class Exception { public: explicit Exception(const std::string& message) : message_(message) {} // 가상 소멸자 추가 virtual ~Exception() {} // 예외 메시지를 반환하는 가상 함수 virtual const char* what() const noexcept { return message_.c_str(); } private: std::string message_; }; // Exception을 상속받은 커스텀 예외 클래스 class CustomException : public Exception { public: explicit CustomException(const std::string& message, int errorCode) : Exception(message), errorCode_(errorCode) {} // CustomException에만 있는 멤버 함수 int getErrorCode() const { return errorCode_; } private: int errorCode_; }; void throwException() { // CustomException 객체를 값으로 던짐 (복사본이 던져짐) CustomException ex("CustomException occurred", 404); throw ex; // 함수 종료 시 스택에서 삭제될 객체의 복사본이 던져짐 } int main() { try { throwException(); } catch (Exception& e) { // Exception을 값으로 잡음 -> 객체 잘림 발생 std::cout << e.what() << std::endl; // 파생 클래스의 멤버 접근 시도 try { CustomException& ce = dynamic_cast<CustomException&>(e); std::cout << "Error code: " << ce.getErrorCode() << std::endl; } catch (std::bad_cast&) { // 객체 잘림으로 인해 CustomException으로 캐스팅 실패 std::cout << "Caught bad_cast: Object slicing occurred, cannot cast to CustomException." << std::endl; } } return 0; }위 코드를 실행 시켰을때 예외 클래스를 throw 해줄 때 '메모리 문제'가 발생 하더라구요. 그리고 부모 클래스로 catch를 하지 못했습니다.그래서 저는 교수님 코드와 다른게 뭘까 하고 생각해 보다가 예외클래스 객체의 생성주기의 문제라고 생각해서 gpt와 대화(?)를 해보았고 생성주기 부분을 수정해 주니 정상적으로 작동하였습니다.아래의 예제 코드처럼 동적 할당으로 예외 클래스를 만들어주는게 무겁지 않을까 생각이 듭니다.혹시 저 위 코드에서 메모리 문제를 해결하는 방법이 동적 할당 밖에 없는지 궁금합니다.예외 클래스를 동적 할당으로 생성하여 throw해준 예제 코드#include <iostream> #include <string> // 사용자 정의 예외의 기본 클래스 class Exception { public: explicit Exception(const std::string& message) : message_(message) {} // 가상 소멸자를 추가해 다형성 지원 virtual ~Exception() {} // 예외 메시지를 반환하는 가상 함수 virtual const char* what() const noexcept { return message_.c_str(); } private: std::string message_; }; // Exception을 상속받은 커스텀 예외 클래스 class CustomException : public Exception { public: explicit CustomException(const std::string& message, int errorCode) : Exception(message), errorCode_(errorCode) {} // CustomException에만 있는 멤버 함수 int getErrorCode() const { return errorCode_; } private: int errorCode_; }; void throwException() { // 예외 객체를 동적으로 생성하여 포인터로 던짐 (메모리 관리 필요) throw new CustomException("CustomException occurred", 404); } int main2() { try { throwException(); } // 포인터로 던진 예외를 잡음 catch (Exception* e) { std::cout << e->what() << std::endl; // 파생 클래스로 dynamic_cast하여 멤버 접근 시도 if (CustomException* ce = dynamic_cast<CustomException*>(e)) { std::cout << "Error code: " << ce->getErrorCode() << std::endl; } else { std::cout << "Caught base Exception, cannot cast to CustomException." << std::endl; } // 동적으로 할당한 예외 객체 해제 delete e; } return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-c 코드 질문이 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 큰돌님 다름이 아니라 해당문제를 잘 못 풀겠어서 큰돌님 풀이를 봤는데요저는 맨처음에 문제를 풀때 좌표를 벗어나는지와 구멍인지를 for문 안에서 체크했는데요for(int i = 0; i < 4; i++){ // 해당 좌표만큼 이동한다 int ny = y + dy[i] * value; int nx = x + dx[i] * value; if(!in(y, x) || b[y][x] == 'H') continue; ret= max(ret, down(ny, nx) + 1); }이렇게 제출하니까 틀렸다고 떴습니다. 왜 for문 안에 넣으면 안되는 걸까요?아래는 제출한 전체 코드입니다.#include <bits/stdc++.h> using namespace std; int t,a,d[54][54]; string s; char b[54][54]; bool check[54][54]; const int dy[4] = {-1, 0, 1, 0}; const int dx[4] = {0, 1, 0, -1}; // 좌표 내에 포함하는 지 체크한다 bool in(int aa,int bb){ return(1<=aa && aa<=t && 1<=bb && bb<=a); } int down(int y,int x){ // 이미 갔던 곳이라면 순회를 하는 코드이니까 -1을 출력하고 main함수 종료 if(check[y][x]){ cout << -1 << "\n"; exit(0); } //현재 좌표로 이동한 횟수 -> 이미 해당 위치에 숫자가 있다면 int &ret = d[y][x]; if(ret) return ret; check[y][x] = 1; int value = (int)b[y][x] - '0'; for(int i = 0; i < 4; i++){ // 해당 좌표만큼 이동한다 int ny = y + dy[i] * value; int nx = x + dx[i] * value; // 좌표를 벗어나거나 구멍이면 return 0 -> 갈 수 없음 if(!in(y, x) || b[y][x] == 'H') continue; ret= max(ret, down(ny, nx) + 1); } // 원복을 해준다 check[y][x] = 0; return ret; } int main(){ cin >> t >> a; for(int i = 1; i <= t; i++){ cin >> s; for(int j = 1; j <= a; j++){ b[i][j] = s[j - 1]; } } cout << down(1, 1) << "\n"; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제를 풀 때 변수들을 전역변수로 선언하는 이유가 있나요??
객체지향 공부를 하다 보니 전역변수를 사용하는 것이 실제 사용과 상관 없더라도 잘 안 하게 됩니다. 수업에 보면 대부분의 변수들을 전역변수로 사용하시는데 알고리즘 공부할 때는 웬만하면 전역변수로 선언하는 것이 좋은 건가요? 변수 선언할 때 팁이 있는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H 시간복잡도 질문 있습니다!
벽하나를 허물고 DFS를 반복해 풀이처음에는 이 풀이 방법이 떠올랐는데요벽의 개수가 어림잡아 250개고 벽을 허물고 모든 노드를 dfs를 250번을 돌아야하니 좀 비효율적인 느낌도 들고 시간 복잡도가 너무 커 안될 것 같다. 라고 느낌은 드는데요...점화식으로 초과한다!가 계산이 안되어서 고민입니다..그래야 빨리 포기하고 다른 로직을 생각할텐데 아마 시험볼때는 시간에 쫓기다보니 다른 생각을 못할 것 같아서요.. 어떻게 사고하는게 좋을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
학습 진도 관련해서 질문드립니다!
안녕하세요 기존에 파이썬으로 코딩테스트 공부 하다가, 큰돌님 유튜브 영상 보고 강의까지 입문하게 된 취준생입니다. 공부 계획을 짜던 중, 강의 순서가 주차 단위로만 나뉘어져 있고 일일 단위로는 안 나누어져 있어서 일일 계획을 짜기를 힘들어하고 있습니다.n주차 강의는 해당 주차에 끝내고 싶은데, 주차별로 일일 학습량에 대한 계산을 따로 해 두신게 있는지 궁금합니다.없다면 어떤 식으로 하루 공부량을 잡아야 할지도 조언 부탁드립니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 질문있습니다!
코드 리뷰를 한번 보고 로직을 작성했는데처음에는 이 방식으로 작성했습니다if (visited[(turn+1) % 2][next]) continue;visited[(turn+1) % 2][next] = visited[(turn) % 2][now] + 1; 500000 0 을 입력했을 때 999가 나오면서 오답인데선생님 코드는if (visited[(turn) % 2][next]) continue;visited[(turn) % 2][next] = visited[(turn +1) % 2][now] + 1;으로 -1 나오면서 정답인데두 코드간의 차이를 모르겠습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-M 시간초과
제가 처음 코드를 작성했을 때이렇게 작성했는데 시간초과가 났습니다. 여기서 처음 cnt를 1로 설정하고 N이 됐을때 break를 걸었습니다. 근데 여기서 선생님이 했던 방식으로 cnt를 N으로 설정하고 0이 될때 멈추니 시간초과가 안났습니다. 이게 바꾼 코드입니다. 왜 +/- 가 시간차이가 나는건가요? 동일한 방식인데 이해가 안갑니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
마지막 문제 질문 있습니다.
//if (knight != nullptr)//{// if (knight->IsDead())// {// delete knight;// knight = nullptr;// // 내 풀이// break;// }//} 저는 삭제가 된 메모리를 계속 건드리것으로 파악하고 break;문으로 for문을 빠져나오는 식으로 수정했는데 문제가 있는 해답인지 아닌지 궁금합니다.