묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 1629번 질문있습니다!
http://boj.kr/32ee2c9fb69842d79baa9f0b375f68f9단순히 연산 코스트를 줄이기 위해 2등분이 아닌 3등분으로도 될까싶어서 짜봤습니다.궁금한 점은 1. 안되는 이유가 연산코스트가 줄지만 ret=(ret*ret*ret)%c; 에서 ret에서 저장할수있는 값을 초과해서일까요?3등분도 아니고 4등분도 아니고 2등분을 선택하신 이유에 대해서 궁금합니다!
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
소켓 프로그래밍 실습 과정에서 문제가 발생했습니다.
지금 위와 같은 에러 코드가 나타나고 있습니다.Server의 설정에서 링커 경로를 수정해 주었지만, 고치는데 실패하였습니다.검색을 통해서 문제를 해결해보고자 하였지만, 그러지 못해 답답한 마음에 질문을 올리게 되었습니다.Server의 추가 라이브러리 디렉터리는 $(SolutionDir)Libraries\ServerCore\ 이고,ServerCore의 출력 디렉터리는 $(SolutionDir)Libraries\ServerCore\$(Configuration)\ 입니다.언제나 좋은 강의를 제공해주셔서 감사드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 1940 주몽 질문있습니다!!
안녕하세요 선생님.이 문제를 맵을 이용해 풀어보려고 했는데요.692 7 4 1 5 3예시가 이렇게 들어올 때 mp[2]=7, mp[7]=2, mp[4]=5 ..... 이런 식으로 저장한 후에 맵을 순회하며 그 해당 요소의 value 값과 똑같은 key의 값이 0이 아니라면 ret을 1 증가시키고 짝이 맞는 key값들은 삭제하는 로직으로 짜봤습니다.예시는 맞지만 틀립니다.궁금한 점은 1.맵을 순회하면서 맵의 요소를 erase하면 문제가 생기는지(디버깅을 해보니 제가 원하는 방식과 다르게 작동하더라구요)2.조건에 맞는 요소들을 안전하게 제거하면서 맵을 순회할수 있는 방법이 있는지입니다.http://boj.kr/8d1b67b0e4c64c5ba02d48e5a656025c
-
미해결홍정모의 따라하며 배우는 C++
맥북 visual studio code 에서 헤더파일은 어떻게 만드나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. visual studio code에서는 헤더파일을 어떻게 만드나요?
-
미해결홍정모의 따라하며 배우는 C++
맥북 visual studio code 링킹
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 말씀해주신대로 g++ add.cpp main.cppclang++ add.cpp main.cpp 2가지 다 해도 안됩니다.... 어떻게 해야할까요?윈도우 노트북을 사야할까요?공부하고 싶은데 맥북 visual studio code로는 따라가기가 너무 힘드네요....
-
해결됨CUDA 프로그래밍 (4) - C/C++/GPU 병렬 컴퓨팅 - 행렬 matrix 곱하기
kernelMatCpy에서는 __syncthreads가 필요없지 않나요
제목 그대로 kernelMatCpy에서는 각 스레드 작업이 다른 스레드에 영향을 주지 않기 때문에 필요없을 것 같은데요. 실제로 __stncthreads()를 제거하고 돌려봐도 정상적으로 결과가 나오구요.혹시 이런 경우라도 내부적으로 꼬일 수 있어서 사용하신 것인지 아니면 대부분의 shared memory로 복사해서 쓰는 경우에 필요하기 때문에 습관(?)차원에서 사용하신 것인지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C++
namespace 관련 질문
결과값은 잘 나오는데 컴파일 관련 오류가 있는 것 같습니다해결방법 알 수 있을까요??
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
C++이랑 언리얼 방향성
유니티는 딱 정해져있으니까 게임개발시리즈 쭉 공부하다가 실전프로젝트 섞어서 하면 되겠다 하는 방향이 보이는데 언리얼은 올인원, UE5시리즈, MMORPG시리즈 셋다 입문이고 이래서...짜여져있는 로드맵이 없다보니 정하기가 어려워요 ㅠ그래서 혼자 뭘 우선으로 해야할지 고민하다가 물어보는게 좋을거같아서 질문드립니다.강사님 강의로 언리얼 블루프린트로 입문해서 C++ 배우는 식으로 가는 로드맵을 만든다면올인원 -> 입문자를 위한 UE5시리즈 -> C++과 언리얼로 만드는 MMORPG게임개발시리즈 -> C++20, DX11입문올인원으로 한번 슥 확인하고 입문자를 위한 UE5 시리즈보고 C++과 언리얼로 만드는 MMORPG시리즈로 넘어가서 C++ 좀더 심층적으로 하고 C++20 훑어보기랑 DX11 입문으로 넘어가는 식으로..방향을 잡으면 될까요??
-
해결됨홍정모의 따라하며 배우는 C++
너무 옛날 강의 ..
이거 보니까 2018년도에 녹화하신건데 지금 2023년 한달뒤면 2024년인데 내용이 너무 뒤쳐지지는 않을까여 ? 저는 초보자라서 잘 모르는데 고수분들이 보기에는 어떤것 같나여 ?? 답변좀 부탁드립니다!
-
미해결홍정모의 따라하며 배우는 C++
맥북 터미널로 실행
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 말씀해주신 유튜브 링크로 맥북 visual studio code 세팅중인데 터미널에서 실행하는 방법대로 하니 저는 안되는데 왜 그럴까요....? zsh : command not found: code 로 뜨네요
-
미해결홍정모의 따라하며 배우는 C++
vscode 에서 c++을 사용하면 솔루션은 안만들어도 되는건가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.vscode 에서 c++을 사용하면 솔루션은 안만들어도 되는건가요? 솔루션 안에 프로젝트를 만들라고 하는데 vscode에서는 프로젝트만 만들면 되는거 맞을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 질문드립니다.
안녕하세요 선생님!http://boj.kr/6ef33cd0118348bf9e15f38303108e38이렇게 하면 예시로 주어진 입출력 1,2는 맞게 나오는데 결과는 오답으로 나옵니다.어느 부분에서 제가 잘못 생각한 것인지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-I_11723_집합
안녕하세요 큰돌님!저는 이 문제에서 입력을 cin으로 받고 그 이후에는 getline으로 받는 방법으로 풀었습니다. cin 뒤에 오는 개행 문자를 제거하기 위해 cin.ignore();를 했지만 50%만 통과하고 틀렸다고 합니다 ㅠㅠ 혹시 입력 받을 때 더 고려해야하는 부분이 있는건가요? 또한 all에서 모든 비트를 켤 때 m=(1<<20)-1;이 아니라 m=(1<<21)-1;로 한건 그냥 범위를 여유롭게 잡으신 건가요?http://boj.kr/040dd72f053a438f833591a06ba882b8
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
커리큘럼 질문
C++ 공부하려는데 게임으로 공부하는게 재밌을거같아서 결제했습니다. 근데 선수학습이 C#인데 C#은 지금 안하고싶은데 C언어는 기본은 되어있으니 그냥 이걸로 들어도 되죠?
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
Vertex 종류에 관하여 질문
강사님 Mesh에 장착하는 Geometry<T>에 관하여 질문이 있습니다.강사님이 강의를 진행하실때는 Geometry를 만드시면서 Vertex를 손수 타입지정(T)을 해주시는걸 보고 실제 유니티에서는 어떻게 적용되어있나 들어가서 확인해 봤더니 기본 도형들(Mesh) 같은 경우 전부 동일한 Vertex 타입을 사용했지만 외부에서 다운받아 온 Mesh 같은 경우엔 이것이 StaticMesh이건 SkeletalMesh이건 Vertex 타입이 조금조금씩은 다른 정보들을 가지고 있더라고요.그래서 유니티 공식 메뉴얼를 찾아봤더니 Vertex 타입은 하나만 쓰고 그중 가져온 모델이 필요로 하지 않는 정보가 있을 경우엔 그 항목을 비활성화 한다고 하더라고요.가져온 모델이 어떤 Vertex 타입을 사용하는지 어떻게 알고 이걸 안다고 쳐도 비활성화는 어떻게해서 vertex 버퍼를 만드는지 알 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H_2234_성곽
안녕하세요 큰돌님!마지막에 벽 하나를 허물어 최대 영역수를 구하는 부분에서 질문이 있습니다.1. 큰돌님은 ->,↓ 방향으로만 탐색하며 벽을 허무셨지만,저는 처음부터 그렇게 생각하지 못해서 각 칸마다 4방향을 모두 탐색하는 알고리즘( for(int k=0; k<4; k++) )으로 작성하였습니다. 예제코드는 통과하였지만 제출 하면 틀렸다고 뜸니다..어디서 반례가 생기는지 알 수 있을까요?ㅜㅜ 나머지 부분은 다 비슷하게 작성하였습니다. 또한 compSize[2504] 사이즈를 50이 아닌 2500으로 설정하셨는지도 궁금합니다. compSize의 최댓값은 맵의 크기인 n*m=50이 아닌가요? http://boj.kr/3c4e0499d8a740a0a39610f71efd033c
-
미해결홍정모의 따라하며 배우는 C++
vsc에서 bool b3{ true }; 빌드 관련질문
vsc에서 bool b3{ true };이 코드에서 빌드 오류가 나는거 같은데b3뒤에 ;이 빠졌다고 나오는데 어떻게 해결하는지 잘 모르겠습니다
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
43번 뮤직비디오 질문
안녕하세요 강사님 🙂43번 뮤직비디오의 채점 폴더의 2번 케이스의 output이 23이 되어야 하는게 아닌지 질문드립니다.현재 2번 케이스<input>10 36 5 8 5 6 8 7 6 6 7<output>24배열 정렬, 5 5 6 6 6 6 7 7 8 8(5, 5, 6, 6) (6, 6, 7) (7, 8, 8)(5, 5, 6, 6) = 22(6, 6, 7) = 19(7, 8, 8) = 2324가 아닌 23이 최소 비용이 되는 값이 아닌지 질문드립니다제가 작성한 코드void swap(int* a, int* b) { int temp = *a; a = b; *b = temp; } int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = low - 1; for (int j = low; j < high; j++) { if (arr[j] < pivot) { i++; swap(&arr[i], &arr[j]); } } swap(&arr[i + 1], &arr[high]); return i + 1; } void quickSort(int arr[], int low, int high) { if (low < high) { int pivotIndex = partition(arr, low, high); quickSort(arr, low, pivotIndex - 1); quickSort(arr, pivotIndex + 1, high); } } int main() { int N, M; scanf_s("%d%d", &N, &M); int* pN = (int*)malloc(sizeof(int) * N); for (int i = 0; i < N; i++) { scanf_s("%d", &pN[i]); } // 배열 정렬 quickSort(pN, 0, N - 1); int lt = 1, rt = 0; // 배열의 모든 요소를 더하여 rt 초기화 for (int i = 0; i < N; i++) { rt += pN[i]; } while (true) { int cnt = 0, sum = 0; int mid = (lt + rt) / 2; if (mid == lt) { printf("%d", rt); break; } if (mid == rt) { printf("%d", rt); break; } // 누적 합이 mid를 넘으면 카운트 증가 for (int i = 0; i < N; i++) { if ((sum + pN[i]) > mid) { sum = 0; cnt++; } // 마지막 배열의 경우 카운트 증가 if (i == N - 1) cnt++; sum += pN[i]; } // 카운트에 따라 이분 탐색 범위 조절 if (cnt <= M) { rt = mid; } else { lt = mid; } mid = (lt + rt) / 2; } // 동적 할당한 배열 메모리 해제 free(pN); return 0; } break; } if (mid == rt) { printf("%d", rt); break; } // 누적 합이 mid를 넘으면 카운트 증가 for (int i = 0; i < N; i++) { if ((sum + pN[i]) > mid) { sum = 0; cnt++; } if (i == N - 1) cnt++; sum += pN[i]; } // 카운트에 따라 이분 탐색 범위 조절 if (cnt <= M) { rt = mid; } else { lt = mid; } mid = (lt + rt) / 2; } // 동적 할당한 배열 메모리 해제 free(pN); return 0; }
-
미해결홍정모의 따라하며 배우는 C++
상속-base class undefined
안녕하세요, 제가 며칠 잠을 못자서 그런지 계속 상속에서 에러가 나네요..개념도 다시 한번 정비하려고 강의도 정주행 중인데, 며칠 째 못풀어서 답답해서 일단 질문드립니다.ㅠ조금 긴 코드이지만 염치 불구하고 혹시 도와주신다면 정말로 감사할 것 같습니다.우선, menu를 userMenu에서 상속받고 몇가지 변수들도 추가하고자 하여, virtual function-override를 사용해보았습니다.그런데 계속해서Severity Code Description Project File Line Suppression StateError C3668 'UserMenu::handleEvents': method with override specifier 'override' did not override any base class methodsSeverity Code Description Project File Line Suppression StateError C2504 'Menu': base class undefined이와 같은 오류가 납니다.virtual function 선언 때 0을 부여해도 마찬가지입니다. // 우선 userMenu.h 와 .cpp 입니다. #pragma once #ifndef USER_MENU_H #define USER_MENU_H #include "menu.h" #include "gameDisplay.h" class UserMenu : public Menu { public: UserMenu(); void u_run(); void handleEvents() override; protected: sf::Text subText; sf::Text buttonSecond; sf::RectangleShape borderSecond; sf::Text buttonThird; sf::RectangleShape borderThird; }; #endif // .cpp #include "userMenu.h" UserMenu::UserMenu() : Menu() { subText.setString(" - user mode - "); subText.setFont(font); subText.setCharacterSize(30); subText.setFillColor(sf::Color::White); sf::FloatRect managerRect = subText.getLocalBounds(); subText.setPosition((window.getSize().x - managerRect.width) / 2, (window.getSize().y - managerRect.height) / 2 - 170); // 2 buttonSecond.setString("2. WORD GAME"); buttonSecond.setFont(font); buttonSecond.setCharacterSize(50); buttonSecond.setFillColor(sf::Color::White); sf::FloatRect buttonSecondRect = buttonSecond.getLocalBounds(); // left // down buttonSecond.setPosition((window.getSize().x - buttonSecondRect.width) / 2, (window.getSize().y - buttonSecondRect.height) / 2 + 10); // 3 buttonThird.setString("3. PROFILE & USERS"); buttonThird.setFont(font); buttonThird.setCharacterSize(50); buttonThird.setFillColor(sf::Color::White); sf::FloatRect buttonThirdRect = buttonThird.getLocalBounds(); // left // down buttonThird.setPosition((window.getSize().x - buttonThirdRect.width) / 2, (window.getSize().y - buttonThirdRect.height) / 2 + 110); window.draw(buttonSecond); window.draw(buttonThird); u_run(); } void UserMenu::u_run() { while (window.isOpen()) { createDisplay(); createButton(); handleEvents(); render(); } } void UserMenu::handleEvents() { sf::Event event; while (window.pollEvent(event)) { sf::Vector2f mousePos(event.mouseButton.x, event.mouseButton.y); if (event.type == sf::Event::Closed) { window.close(); } else if (event.type == sf::Event::MouseButtonPressed) { if (buttonSecond.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "Second button clicked! Opening new window..." << std::endl; window.close(); GameDisplay gameDisplay; gameDisplay.run(); } else if (buttonThird.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "Third button clicked! Opening new window..." << std::endl; window.close(); CurrentProfile currentProfile; // later must be replaced currentProfile.run(); } } else if (event.type == sf::Event::MouseMoved) { if (buttonFirst.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonFirst.setFillColor(sf::Color::Red); } else { buttonFirst.setFillColor(sf::Color::White); } if (buttonSecond.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonSecond.setFillColor(sf::Color::Red); } else { buttonSecond.setFillColor(sf::Color::White); } if (buttonThird.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonThird.setFillColor(sf::Color::Red); } else { buttonThird.setFillColor(sf::Color::White); } } } }// menu.h와 .cpp입니다. #ifndef MENU_H #define MENU_H #include "loginSystem.h" #include "currentProfile.h" class Menu { public: Menu(); void run(); void playClick(); sf::SoundBuffer clickBuffer; sf::Sound clickSound; virtual void createDisplay(); void createButton(); virtual void handleEvents(); // = 0 해도 결과는 같음(에러) void render(); sf::RenderWindow window; sf::Font font; sf::Text mainText; sf::Text backButton; sf::RectangleShape borderRect; bool isManager; sf::Font m_font; sf::Text buttonFirst; sf::RectangleShape borderFirst; }; #endif #include "menu.h" Menu::Menu() : window(sf::VideoMode(1400, 700), "Menu Display") { } void Menu::run() { while (window.isOpen()) { createDisplay(); createButton(); handleEvents(); render(); } } void Menu::createDisplay() { if (!font.loadFromFile("font/hangthedj.ttf")) { std::cerr << "Failed to load font!" << std::endl; } mainText.setString("let's practice together"); mainText.setFont(font); mainText.setCharacterSize(70); mainText.setFillColor(sf::Color::White); sf::FloatRect textRect = mainText.getLocalBounds(); mainText.setPosition((window.getSize().x - textRect.width) / 2, (window.getSize().y - textRect.height) / 2 - 240); // Back button backButton.setString("BACK"); backButton.setFont(font); backButton.setCharacterSize(30); backButton.setFillColor(sf::Color::White); sf::FloatRect loginButtonRect = backButton.getLocalBounds(); // left // down backButton.setPosition((window.getSize().x - loginButtonRect.width) - 250, (window.getSize().y - loginButtonRect.height) / 2 + 180); borderRect.setSize(sf::Vector2f(loginButtonRect.width + 10, loginButtonRect.height + 10)); borderRect.setPosition((window.getSize().x - loginButtonRect.width) - 253, (window.getSize().y - loginButtonRect.height) / 2 + 180); borderRect.setFillColor(sf::Color::Transparent); borderRect.setOutlineThickness(4); borderRect.setOutlineColor(sf::Color::White); } void Menu::createButton() { if (!m_font.loadFromFile("font/RobotoSlab-Bold.ttf")) { std::cerr << "Failed to load font!" << std::endl; } // 1 buttonFirst.setString("1. VOCABULARY"); buttonFirst.setFont(m_font); buttonFirst.setCharacterSize(50); buttonFirst.setFillColor(sf::Color::White); sf::FloatRect buttonFirstRect = buttonFirst.getLocalBounds(); // left buttonFirst.setPosition((window.getSize().x - buttonFirstRect.width) / 2, (window.getSize().y - buttonFirstRect.height) / 2 - 70); } void Menu::playClick() { if (clickBuffer.loadFromFile("media/click_sound.wav")) { clickSound.setBuffer(clickBuffer); clickSound.play(); } else { std::cerr << "Failed to load click sound file!" << std::endl; } } void Menu::handleEvents() { sf::Event event; while (window.pollEvent(event)) { sf::Vector2f mousePos(event.mouseButton.x, event.mouseButton.y); if (event.type == sf::Event::Closed) { window.close(); } else if (event.type == sf::Event::MouseButtonPressed) { if (buttonFirst.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "First button clicked! Opening new window..." << std::endl; window.close(); // insert run } else if (backButton.getGlobalBounds().contains(mousePos)) { playClick(); std::cout << "BACK button clicked! Opening previous window..." << std::endl; window.close(); LoginSystem loginSystem; loginSystem.run(); } } else if (event.type == sf::Event::MouseMoved) { if (buttonFirst.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { buttonFirst.setFillColor(sf::Color::Red); } else { buttonFirst.setFillColor(sf::Color::White); } if (backButton.getGlobalBounds().contains(sf::Vector2f(event.mouseMove.x, event.mouseMove.y))) { backButton.setFillColor(sf::Color::Red); borderRect.setOutlineColor(sf::Color::Red); } else { backButton.setFillColor(sf::Color::White); borderRect.setOutlineColor(sf::Color::White); } } } } void Menu::render() { window.clear(); window.draw(mainText); window.draw(backButton); window.draw(borderRect); window.draw(buttonFirst); window.draw(borderFirst); window.display(); }
-
미해결[게임 프로그래머 도약반] DirectX11 입문
프로젝트 설정 38분 질문있습니다.
강의 진행하는데는 크게 문제가 없는데Client프로젝트를 빌드하는 과정에서SimplatMath.h에서 938줄에 주석해놓은 부분에서 .inl파일을 못 찾는거같아임시용으로 경로 하드 코딩해서 넣어주었습니다.Engine 프로젝트 속성에서 C/C++ ->General에서 경로를 아래와 같이 추가적으로 더 넣었고 Linker -> Genral에서도 아래처럼 경로를 추가적으로 넣어주어도 SimpleMath.inl 파일 경로를 못찾던데 이럴경우 어떤 방법이 있는지 궁금합니다.(현재 솔루션 Dir/Engine폴더에 SimpleMath.h, SimpleMath.cpp, SimpleMath.inl같이 있습니다)