묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C++
friend 키워드에 대한 개념이 안잡힙니다.
안녕하세요.아래와 같은 코드가 있다고 가정했을때,첫번째 operator(friend 키워드가 없는)는 에러표시를 하고두번째 operator(friend 키워드가 있는)는 정상 컴파일이 됩니다.friend 키워드에 대한 강의도 앞에서 보았고,'private 멤버 함수에 대한 접근이 가능하도록 해준다' 는 생각과 operator 코드 작성간의 상관관계가 무엇인지 모르겠습니다 ㅠ// 아래 함수 정의에선 해당 오퍼레이터 함수에 인자값이 너무 많다고 하고, std::ostream& operator << (std::ostream &out, const Point& point) { }// friend 키워드를 붙일경우엔 정상 컴파일이 됩니다. friend std::ostream& operator << (std::ostream &out, const Point& point) { }
-
해결됨C개발자를 위한 최소한의 C++
스크립트 오류 참조형(변하지 않는 포인터)
10:00 경 "근데 지금 값이 참조자인 ref에 들어있는 값하고 요놈하고 똑같죠. 네 그래서 여기에다 대고 그래서 간접지정해서 30 이러면은 F10키 눌러 보면 여기 데이터의 값이 바뀌는 걸 보실 수가 있죠? 네 데이터 출력하면 당연히 30이 나오겠네요. 해서 여러분이 지금까지 이만큼의 내용을 보셔서 아시겠지만 참조자라고 하는 것은 개념적인 표현이고 참조자의 실체는 포인터랑 똑같이 구현이 돼요. 그래서 기계어 수준으로 내려가서 쫓아가 보면은 결과적으로는 그렇다. 그래서 참고하시기 바랍니다. 아, 참조자 이런 거구나." 인데 이게 스크립트에서 이상하게 표시가 됩니다. 처리 부탁드릴게요. 고맙습니다!
-
해결됨C개발자를 위한 최소한의 C++
스크립트 오류
7:38초 경 텍스트가 그러면 그거랑 5랑 더해서 연산의 임시결과가 떨어졌겠죠 그게 15가 저장되어 있는 integer 인스턴스일텐데, 사라져야 될 운명이었으나 거기에다 이름을 부여한거죠. 인데 수정 제안할랬더니 길어서 짤리네요. 관리자분께서 스크립트 시간 자른 후 나눠서 바꿔주셔야 할 것 같아요.지난 시간 것도 유사한 게 있었어요. 통으로 날아가 있어서... 조치 부탁드립니다! 노트 필기하는 마음으로 스크립트 수정 중입니다. ㅎㅎ
-
미해결C++20 훑어보기
StringLiteral에서 [N]은 어떻게 동작되는건가요?
안녕하세요강의를 보다가 궁금한 점이 생겨서 질문드려요 template<int N> class StringLiteral { public: constexpr StringLiteral(char const (&str)[N]) { std::copy(str, str+N, _data); } char _data[N]; }; template<StringLiteral str> class ClassTemplate { }; template<StringLiteral str> void FunctionTemplate() { cout << str._data << endl; } int main() { ClassTemplate<"Hello World"> cls1; FunctionTemplate<"Hello World">(); return 0; }위 코드에서 [N]은 자동으로 글자의 수가 채워지는건가요? 어떻게 동작되는지 좀 설명해주시면 감사하겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
BFS 당근마킷 엔지니어 승원이 문제 제꺼 한번 봐주실 수 있나요?
안녕하세요 큰돌님.문제 해답 보기 전에 영상 멈추고 풀기 시작했다가 1시간이나 까먹었네요.... 이래도 성장 할 수 있을지 고민입니다.개인적인 고민은 뒤로 두고 다음의 코드로 풀긴 했는데 이게 맞는 코드인지 봐주실수 있나요?항상 질문 답변 해주셔서 감사합니다. #include <bits/stdc++.h> using namespace std; int N, M, startY, startX, destY, destX, adj[104][104]; int dy[] = {1, 0, -1, 0}; int dx[] = {0, 1, 0, -1}; map<pair<int, int>, int> visited; void bfs(int y, int x) { pair<int, int> pos = {y, x}; visited[pos] += 1; queue<pair<int, int>> q; q.push(pos); while (q.size()) { auto loc = q.front(); q.pop(); for (int i = 0; i < 4; ++i) { int ny = loc.first + dy[i]; int nx = loc.second + dx[i]; pair<int, int> prevOffset = {loc.first, loc.second}; pair<int, int> nextOffset = {ny, nx}; if (ny < 0 || nx < 0 || ny >= M || nx >= N) continue; if (visited[nextOffset]) continue; if (adj[ny][nx] == 0) continue; visited[nextOffset] = visited[prevOffset] + 1; q.push(nextOffset); if (ny == destY && nx == destX) q = queue<pair<int, int>>(); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; cin >> startY >> startX; cin >> destY >> destX; for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) cin >> adj[i][j]; bfs(startY, startX); cout << visited[make_pair(destY, destX)] << "\n"; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
sstream에 있는 split()을 써도 되나요?
#include <sstream> #include <vector> int main() { std::string str = "1, 2, 3, 4, 5"; // str을 ,로 분리합니다. std::vector<std::string> tokens = split(str, ","); // 분리된 토큰을 출력합니다. for (const auto& token : tokens) { std::cout << token << std::endl; } } bard에 물어보니 string을 vector로 바꿔주는 split 함수가 있다고 하는데, 코딩 테스트 환경에선 이런 라이브러리를 사용 할 수가 없어서 함수를 외워서 써야하는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 116페이지 Ralo구조체 출력 결과 질문입니다.
안녕하세요, 강의를 잘 듣고 실습 중 질문이 있습니다. 알고리즘 교안 116페이지 Ralo구조체 예제 코드 진행 시 출력물에 대한 질문입니다. #include <bits/stdc++.h> using namespace std; struct Ralo { int a, b; double c, d, e; }; void print(Ralo ralo) { cout << ralo.a << " " << ralo.b << " " << ralo.c << " " << ralo.d << " " << ralo.e << '\n'; } int main() { Ralo ralo = {1, 1, 1, 1, 1}; print(ralo); vector<Ralo> ret; ret.push_back({1, 2, 3, 4, 5}); ret.push_back({1, 2, 3, 4, 6}); ret.push_back({}); ret.push_back({1, 3}); for (Ralo ralo : ret) { print(ralo); } return 0; }위 예시에서 a, b의 자료형은 int이고 c, d, e 의 타입은 double라고 먼저 선언을 하게 되는데, main함수에서 출력 시 왜 일관되게 정수형으로 출력되는지 이해가 안됩니다.(형변환이 일어나야하거나, 타입 불일치에 따른 에러가 떠야 하는게 맞는거 아닌가요 ?!) 제가 부족한 개념이 많이 있을 수도 있으니 너그럽게 읽어주시면 감사하겠습니다. ^^;;
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-K 문제 틀린 로직인가요?
안녕하세요 큰돌선생님 매번 좋은강의와 코드 감사합니다강의와 수업을 복습하며 문제를 다시 풀어보았는데요, 제 처음 풀이는 플러드 필을 사용하면 깔끔하게 풀 수 있을것 같아서 적용하여 풀어보았는데, 문제의 예제조차 통과하지 못하여 그냥 새롭게 큐를 계속 새로 만들어서 하는 방식으로 수정하여 통과하였습니다. 근데 첫번째 접근방법의 로직에서 틀린부분이 없다고 생각하는데 혹시 어디가 틀린것인지 봐주실 수 있으신가요? 새롭게 미세먼지가 퍼지는 부분을 큐에 계속 담는 방식을 사용하였습니다. 첫번째 틀린 코드http://boj.kr/cdaa0817a0054c8aaa05db4a94fd4cc1 수정후 정답 코드http://boj.kr/48dc28720f1840d78af14656ac682d39
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
변수 선언에 대한 결과 차이
#include <bits/stdc++.h>using namespace std;string s;int cnt[26];int main(){ cin >> s; for(char a : s){ cnt[a-'a']++; } for(int i = 0; i <= 26; i++){ cout << cnt[i] << " "; } return 0;} 이렇게 실행할 경우 baekjoon을 복붙하면 정상적인 결과가 나옵니다. 나중에 복습할 때 안 보고 풀어봤습니다만...변수 선언을 다음과 같이 하니까 결과 값이 달라집니다.int cnt[26];string s;사실상 순서만 바뀌었는데 왜 이렇게 결과가 바뀌는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 질문드립니다.
http://boj.kr/e1c3caaa80904ade933b274903722b31 시간초과 해결을 못하겠어서 어디 부분이 틀린건지 잘 모르겠습니다 ㅠㅠ
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
섹션10 RawBuffer의 _result버퍼 생성시 질문
안녕하세요.섹션10 RawBuffer의 _result버퍼 생성시 BUFFER_DESC 설정 부분 질문 드립니다."B-14)+Viewport" 샘플 코드를 참조하였습니다. RawBuffer.cpp (줄: 120) 을 보면 아래와 같이 작성해주셨는데요void RawBuffer::CreateResult() { D3D11_BUFFER_DESC desc; _output->GetDesc(&desc); desc.Usage = D3D11_USAGE_STAGING; desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; desc.BindFlags = D3D11_USAGE_DEFAULT; // UAV가 연결되려면, USAGE는 DEFAULT여야 함. desc.MiscFlags = 0; CHECK(DEVICE->CreateBuffer(&desc, nullptr, _result.GetAddressOf())); }desc.Usage 에 USAGE_STAGING 을 주셨는데, 아래 BindFlags 옆 주석으로는 "Usage 는 DEFAULT 여야 한다"고 적어주셔서 혼란스럽습니다. 그리고 BindFlags 에 USAGE_DEFAULT 를 주셨는데, 의도 된 값인지, 의도한 값이 아니라면 어떤 Flags 를 주어야 하는지 궁금합니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-L 질문합니다
안녕하세요, 선생님 강의 잘 듣고 있습니다!6-L 을 풀던 도중, 제 풀이 방법이 틀렸다고 나와 반례가 궁금합니다.시간 복잡도는 O(n* n/2) 이라 통과 한다고 생각합니다.A[i]에 10을 곱한것은 혹시 모를 부동 소수점 오류가 날지 몰라 처리 해두었습니다.https://www.acmicpc.net/source/70768639
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
온라인 환경에서 Arrow, 제거와 발사 시 동기화 문제
안녕하세요 Rookis님.강의를 모두 완강하고 포트폴리오를 개선하고 있는 중입니다.강의 중에 화살을 온라인에 추가할 것이라면 Creature와 GameObject 내용을 수정해야 한다고 하셔서 코드 이사는 완료한 상태입니다.지금 Arrow는 MyPlayer에서 입력을 받고 State와 WeaponType을 체크하면 Player에서 Scene에 Arrow를 스폰해주는 방식으로 알고 있습니다.이걸 서버에서는 몬스터나 플레이어를 만드는 GameObject::Create 함수를 파줘서 Arrow를 make_shared로 만들어서 발사 처리를 하게 만들었는데요서버에서 몬스터가 제거되면 클라이언트에서도 정상적으로 몬스터가 제거되는걸 확인은 했습니다.그러나 문제가 몇 가지 있습니다.Arrow 스마트 포인터가 해제되지 않는 현상Arrow 동기화가 종종 씹히는 현상입니다. 먼저 1번입니다.make_shared로 생성된 Arrow가 해제되지 않음void Player::UpdateSkill() { if (room == nullptr) return; if (info.weapontype() == Protocol::WEAPON_TYPE_SWORD) { // 내 앞에 있는 좌표 CreatureRef creature = room->GetCreatureAt(GetFrontCellPos()); if (creature) { if (creature->GetType() == Protocol::OBJECT_TYPE_PLAYER) { SetState(IDLE); return; } // 몬스터가 플레이어에게 피격 creature->OnDamaged(shared_from_this()); } } else if (info.weapontype() == Protocol::WEAPON_TYPE_BOW) { ArrowRef arrow = CreateArrow(); arrow->SetDir(GetLookAtDir(GetFrontCellPos())); arrow->SetOwner(shared_from_this()); arrow->room = room; arrow->info.set_posx(info.posx()); arrow->info.set_posy(info.posy()); arrow->SetState(IDLE, true); room->AddObject(arrow); } SetState(IDLE); }서버쪽의 UpdateSkill 함수인데 여기에서 arrow를 CreateArrow로 만들어서 room에 AddObject로 _arrows map을 만들어 관리를 하고 있습니다. (사실 룸에서 발사체를 관리하는 것이 옳은지도 의문이긴 합니다)void GameRoom::Update() { for (auto& item : _players) { item.second->Update(); } for (auto& item : _monsters) { item.second->Update(); } for (auto& item : _arrows) { item.second->Tick(); } }그리고 Update 함수, AddObject, RemoveObject도 _arrows map을 처리하게 만들었습니다.이렇게 처리하다 보니 화살을 제거할 때 몬스터가 피격받는 순간에 해당 화살을 RemoveObject를 실행하니 삭제 이후에 for문을 돌 때 오류가 발생하며 크래시가 발생했습니다.Arrow가 _arrows 맵에서 관리되어서 스마트 포인터가 해제가 안되는 것 같은데, 화살을 어떤 때에서 제거해야 될지 모르겠습니다.지금은 임시적으로 vector에 참조로 받아와서 Update 하단에서 erase하는 방법을 사용하고 있습니다. 화살 동기화 문제 클라이언트에서는 Projectile 클래스에서 _owner에 대한 정보를 들고 있고 Arrow를 Scene에서 소환할 때 GetOwner 함수로 화살의 주인에 대한 포인터를 들고 있도록 했습니다.기존에 발사할 때도 S_Move 패킷을 그대로 이용해서 Arrow의 _owner 포인터를 이용해서 위치를 초기화해주고 있습니다.그런데 두 클라이언트를 접속시켜서 2를 눌러 WeaponType을 Bow로 바꿔서 공격 키로 테스트해보면 종종 반대쪽 플레이어의 화살이 안보이는 경우가 있습니다.여기에 몇 개의 질문이 있는데요1) 화살을 생성하고 클라이언트에서 패킷을 전송하는 것이 맞는지2) 맞다면 어떤 정보를 패킷에 담아야 하는지3) 서버에서는 어떤 처리를 해주어야 하는지잘 모르겠습니다.일단은 Make, Handle 함수를 파서 ObjectInfo를 넣어놓긴 했습니다.하루 종일 코드를 조작해봐도 해결을 못하고 있습니다.. 도와주세요..
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
Graphics강의 생성자에서 멤버함수 호출
Graphics 11:15 시간에 생성자함수에서 멤버함수를 호출하는데 큰 문제가 되지는 않나요? 검색했을 때 가상함수만 아니면 괜찮다는 글이 많긴 하던데 보통 멤버 함수를 호출해야 하는 경우에는 Init()함수를 따로 만들기만 했었습니다.그리고 언리얼에서는 생성자 함수에서 멤버함수 포인터를 사용하는 경우에도 에러가 발생했었기 때문에 함수 포인터를 사용하는 경우에는 BeginPlay 함수에서 호출했었습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1620문제 번호가 바뀐 김에
안녕하세요 큰돌님, 현 1620 단어퍼즐https://www.acmicpc.net/problem/1165위 문제를 연습 삼아서 그냥 풀어 보려하는데혹시 실제 코테에 파일스트림 읽어서 문제 풀이를 진행해야 하는 케이스가 꽤 있는 편인가요?
-
미해결readable_code::CMake - Fancy하게 C++ Project 만들기
MATCHES - 특정 패턴 포함
26분 45초에 다른 메시지를 보고 되었다고 오해하신거 같아요^[a-z]{3}.txt$abc.txt도 되지 않고 a3.txt도 되지 않는데 어떨때 True인가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-M 질문있어서 문의드렸습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 큰돌님 강의 잘 보고있습니다!2-M문제를 풀때 to_string의 시간복잡도가 O(log n) , find가 O(N)이라서 시간복잡도에 문제가 있을줄 알았는데 해결이 되었습니다. 혹시 이 문제의 시간복잡도는 어떻게 될까요??
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문자 질문입니다.
혹시char ch3 = 'a' + 1;이 코드에서 1은 int형 정수로 출력이 되는데 char 타입이 자동으로 변환을 해서 2바이트로 할당하게 되는건가요?그리고 1이라는 숫자에 마우스 커서를 놔두면 (int)1이라고 표현이 되는데 여기서 1은 데이터타입이 문자가 아닌 정수로 변환해야 해서 자동 변환 시켜주는건지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 처음 겪는 맞왜틀
안녕하세요 큰돌님.원래 각 영상별로 영상 시작시 영상 잠깐 멈추고스스로 문제를 풀어보고 도저히 안되면 영상 보는데요.영상 끝까지 보고 edge case가 뭔지 찾아서 풀었네요. 혹시 이런 코테 준비할때 edge case 대응 방법이 있을까요?단순히 경험치가 쌓이면 늘게 되는건가요?
-
미해결홍정모의 따라하며 배우는 C++
6.18 2분 47초
안녕하세요? 혹시 여기서 왜 C의 주소를 출력했는데 이상하게 나오고(한자 같은 게 나오고), 나머지 float는 문제없이 출력되는지 궁금합니다ㅠㅠ