inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

Vertex 종류에 관하여 질문

해결됨

[게임 프로그래머 도약반] DirectX11 입문

강사님 Mesh에 장착하는 Geometry<T>에 관하여 질문이 있습니다. 강사님이 강의를 진행하실때는 Geometry를 만드시면서 Vertex를 손수 타입지정(T)을 해주시는걸 보고 실제 유니티에서는 어떻게 적용되어있나 들어가서 확인해 봤더니 기본 도형들(Mesh) 같은 경우 전부 동일한 Vertex 타입을 사용했지만 외부에서 다운받아 온 Mesh 같은 경우엔 이것이 StaticMesh이건 SkeletalMesh이건 Vertex 타입이 조금조금씩은 다른 정보들을 가지고 있더라고요. 그래서 유니티 공식 메뉴얼를 찾아봤더니 Vertex 타입은 하나만 쓰고 그중 가져온 모델이 필요로 하지 않는 정보가 있을 경우엔 그 항목을 비활성화 한다고 하더라고요. 가져온 모델이 어떤 Vertex 타입을 사용하는지 어떻게 알고 이걸 안다고 쳐도 비활성화는 어떻게해서 vertex 버퍼를 만드는지 알 수 있을까요?

  • c++
  • directx
김도형 댓글 1 좋아요 0 조회수 279

4-H_2234_성곽

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌님! 마지막에 벽 하나를 허물어 최대 영역수를 구하는 부분에서 질문이 있습니다. 1. 큰돌님은 ->,↓ 방향으로만 탐색하며 벽을 허무셨지만, 저는 처음부터 그렇게 생각하지 못해서 각 칸마다 4방향을 모두 탐색하는 알고리즘( for(int k=0; k<4; k++) )으로 작성하였습니다. 예제코드는 통과하였지만 제출 하면 틀렸다고 뜸니다.. 어디서 반례가 생기는지 알 수 있을까요?ㅜㅜ 나머지 부분은 다 비슷하게 작성하였습니다. 또한 compSize[2504] 사이즈를 50이 아닌 2500으로 설정하셨는지도 궁금합니다. compSize의 최댓값은 맵의 크기인 n*m=50이 아닌가요? http://boj.kr/3c4e0499d8a740a0a39610f71efd033c

  • c++
  • 코딩-테스트
이효민 댓글 1 좋아요 0 조회수 202

vsc에서 bool b3{ true }; 빌드 관련질문

미해결

홍정모의 따라하며 배우는 C++

vsc에서 bool b3{ true }; 이 코드에서 빌드 오류가 나는거 같은데 b3뒤에 ;이 빠졌다고 나오는데 어떻게 해결하는지 잘 모르겠습니다

  • c++
cksgur 댓글 1 좋아요 1 조회수 204

43번 뮤직비디오 질문

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

안녕하세요 강사님 🙂 43번 뮤직비디오의 채점 폴더의 2번 케이스의 output이 23이 되어야 하는게 아닌지 질문드립니다. 현재 2번 케이스 <input> 10 3 6 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) = 23 24가 아닌 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++
  • 코딩-테스트
김보성 댓글 1 좋아요 0 조회수 249

상속-base class undefined

미해결

홍정모의 따라하며 배우는 C++

안녕하세요, 제가 며칠 잠을 못자서 그런지 계속 상속에서 에러가 나네요.. 개념도 다시 한번 정비하려고 강의도 정주행 중인데, 며칠 째 못풀어서 답답해서 일단 질문드립니다.ㅠ 조금 긴 코드이지만 염치 불구하고 혹시 도와주신다면 정말로 감사할 것 같습니다. 우선, menu를 userMenu에서 상속받고 몇가지 변수들도 추가하고자 하여, virtual function-override를 사용해보았습니다. 그런데 계속해서 Severity Code Description Project File Line Suppression State Error C3668 'UserMenu::handleEvents': method with override specifier 'override' did not override any base class methods Severity Code Description Project File Line Suppression State Error 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(); }

  • c++
의지 댓글 1 좋아요 1 조회수 407

프로젝트 설정 38분 질문있습니다.

미해결

[게임 프로그래머 도약반] DirectX11 입문

강의 진행하는데는 크게 문제가 없는데 Client프로젝트를 빌드하는 과정에서 SimplatMath.h에서 938줄에 주석해놓은 부분에서 .inl파일을 못 찾는거같아 임시용으로 경로 하드 코딩해서 넣어주었습니다. Engine 프로젝트 속성에서 C/C++ ->General에서 경로를 아래와 같이 추가적으로 더 넣었고 Linker -> Genral에서도 아래처럼 경로를 추가적으로 넣어주어도 SimpleMath.inl 파일 경로를 못찾던데 이럴경우 어떤 방법이 있는지 궁금합니다. (현재 솔루션 Dir/Engine폴더에 SimpleMath.h, SimpleMath.cpp, SimpleMath.inl같이 있습니다)

  • c++
  • directx
starkshn 댓글 2 좋아요 0 조회수 683

60번 문제 100점 으로 나오지만 제 코드가 응용력이 떨어진다고 봐야할까요?

해결됨

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

int n, arr[11], sum=0; void DFS(int L) { if (L > n) return; else { sum += arr[L]; DFS(L * 2); DFS(L * 2 + 1); } } int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &arr[i]); } DFS(1); if (sum % 2 == 0) { printf("YES"); } else { printf("NO"); } return 0; } 수의 합들이 2로 나누어 떨어지면 당연히 원소들의 부분집합의 합이 같으니까 더해서 sum%2==0 으로 쉽게 짰는데 강사님 풀이과정과 많이 달라서, 질문 드렸습니다

  • c++
  • 코딩-테스트
Pass 댓글 1 좋아요 1 조회수 319

3-O 사다리 조작 / 예제 입력에 따른 출력 결과는 맞는데 계속 시간초과가 납니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님. 코딩테스트 강의 잘 듣고 있습니다. 15684번 문제 코드를 짰는데, 답 코드랑 비교해서 로직은 맞는 것 같은데 자꾸 시간초과가 납니다. 이유를 잘 모르겠어서 질문 드립니다. #include <iostream> #include <algorithm> #include <vector> using namespace std; int H, W, P; bool isGaro[12][12][32]; //[시작점][끝점][가로선을 놓을 수 있는 위치] int ans = 4; //최대값 3보다 높은 값으로 초기화 bool check() { for (int i = 1; i <= H; i++) { int now = i; for (int j = 1; j <= P; j++) { //자신 기준으로 오른쪽에 선이 있음 if (isGaro[now][now + 1][j]) { now++; //오른쪽으로 이동 continue; } //자신 기준으로 왼쪽에 선이 있음 if (isGaro[now - 1][now][j]) { now--; //왼쪽으로 이동 continue; } } if (now != i) { //한번이라도 번호가 다르면 실패 return false; } } return true; } void go(int pos ,int garoCnt) { //만약 현재 갱신된 가로선 개수보다 개수가 많으면 바로 종료 if (ans <= garoCnt || garoCnt > 3 ) return; //현재 모든 세로선이 사다리 게임을 진행했을 때 //같은 번호가 나오는 지 체크 //만약 모두 같은 번호가 나오면 //갯수 갱신한 뒤에 종료 if (check()) { ans = min(ans, garoCnt); return; } //세로선 번호 int s = pos / 1000; //가로선 번호 int p = pos % 1000; //만약 s == H이면 //다음 가로선으로 넘어가기 //cout << "세로선 번호 : " << s << ' ' << "가로선 번호 : " << p << '\n'; for (int i = p; i <= P; i++) { for (int j = 1; j <= H; j++) { //현재 위치에 있는 가로선을 추가함 if (!isGaro[j][j + 1][i] && !isGaro[j-1][j][i] && !isGaro[j][j][i]) { isGaro[j][j + 1][i] = true; go(1000 * (j + 1) + p, garoCnt + 1); isGaro[j][j + 1][i] = false; } } } } int main(int argc, char** argv) { cin >> H >> W >> P; for (int i = 0; i < W; i++) { int a, b; cin >> a >> b; isGaro[b][b + 1][a] = true; //b번 세로선과 b+1번 세로선을 a번 점선위치에서 연결 } //만약 놓여져 있는 가로선이 없다면 //0을 출력 if (W == 0) { cout << 0; return 0; } //1000 / 1000 = s //1000 % 1000 = p //1000 * s + p //세로선과 가로선 모두 1,1에서 시작 go(1000* 1 + 1,0); if (ans >= 4) { cout << -1; } else cout << ans; }

  • c++
  • 코딩-테스트
황윤신 댓글 1 좋아요 0 조회수 344

3-O 질문있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

왜 틀렸는지 도저히 모르겠습니다.. #include <iostream> #include <cstring> using namespace std; const int dy[2] = { 0,0 }; const int dx[2] = { -1, 1 }; int N, M, H, a, b, adj[31][21], visited[31][21], ret[21], cnt; bool isOk; void Print() { cout << endl; for (int y = 0; y < 31; y++) { for (int x = 0; x < 21; x++) cout << adj[y][x]; cout << endl; } cout << endl; } void Move(int y, int x, int start) { if (y == H + 1) { ret[start] = x; return; } bool isDown = true; visited[y][x] = start; // 좌우 확인 for (int i = 0; i < 2; i++) { int ny = y; int nx = x + dx[i]; if (ny > H + 1 || nx <= 0 || nx > 2 * N - 1) continue; if (visited[ny][nx] == start) continue; if (adj[ny][nx] == 0) continue; Move(ny, nx, start); isDown = false; } if (isDown) Move(y + 1, x, start); } bool Check() { // 값들 초기화 memset(ret, 0, sizeof(ret)); memset(visited, 0, sizeof(visited)); for (int x = 1; x <= N; x++) { Move(0, x * 2 - 1, x * 2 - 1); if (ret[x * 2 - 1] != x * 2 - 1) { return false; } } return true; } void AddLadder() { if (isOk) return; if (cnt >= 3) return; for (int y = 1; y <= H; y++) for (int x = 1; x < N; x++) { if (adj[y][x * 2] != 1 && adj[y][x * 2 - 2] != 1 && adj[y][x * 2 + 2] != 1) { adj[y][x * 2] = 1; cnt++; if (Check()) { isOk = true; // Print(); return; } AddLadder(); adj[y][x * 2] = 0; cnt--; } } return; } int main() { cin >> N >> M >> H; // 사다리 초기값 for (int y = 0; y <= H + 1; y++) for (int x = 1; x <= N; x++) adj[y][x * 2 - 1] = 1; // 가로선 정보 for (int i = 0; i < M; i++) { cin >> a >> b; adj[a][b * 2] = 1; } if (Check()) cout << 0; else { AddLadder(); if (cnt == 0) cout << -1; else cout << cnt; } return 0; }

  • c++
  • 코딩-테스트
요가인 댓글 1 좋아요 0 조회수 291

부모 클래스의 멤버변수가 상속될 때 초기화

미해결

홍정모의 따라하며 배우는 C++

class Child :public Mother { private: double m_d; public: Child() :m_d(1.0), m_i(10) { cout << "child constructor" << endl; } }; 위 코드에서 오류가 나는 이유가 Child객체를 실행할 때 m_d와 m_i에 메모리를 주는 과정에서 child객체가 m_i가 무엇인지 인식을 하지 못하기 때문에 에러가 난다고 이해했는데 맞게 생각한걸까요?

  • c++
ㄱㄷㄱ 댓글 1 좋아요 1 조회수 408

1-F 문제 관련 질문이 있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/7e750fbdd0404abeb7f5004bfc46d7d2 문제를 풀면서 for(int i = 0; i< s.size() ; i++)을 통해서 string의 각 char에 대해 접근하지 않고 for(auto i : s)를 통해서 각 문자에 대해 접근하여 비교를 하려고 했는데, 디버깅을 해보니 for문 아래로 작동을 하지 않는 모습을 보입니다. 혹시 이렇게 하면 안되는 이유가 있는건가요?

  • c++
  • 코딩-테스트
상언김 댓글 2 좋아요 0 조회수 264

1189_컴백홈 전역변수 지역 변수

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰 돌님, ret의 지역변수 선언과 전역변수 선언에 궁금한 점이 있습니다. ny,nx와 같이 재귀함수의 매개 변수로 사용되는 변수는 지역변수로 선언 해야 한다는 것은 이해 했습니다. 그런데 ret은 매개변수로 사용되는 것이 아니기에 전역 변수로 사용해도 된다고 생각했습니다. <질문> 왜 ret을 go 함수가 호출 될 때마다 저 자리에서 초기화 해야 하는지 모르겠습니다.. 재귀가 돌 때마다 초기화 되면 ret+=dfs(ny,nx); 이렇게 누적했던 합도 초기화되는 것 아닌가요? 아니면 int ret=0;선언이 ret+=dfs(ny,nx); 이 과정 앞에서 선언되었기 때문에 return 해서 값을 누적 할 때에는 영향을 안미치는 건가요? ret을 전역 변수로 선언하면 왜 틀리는지 모르겠습니다.. 제가 아마 재귀함수의 구조를 완벽히 이해 못해서 그런 것 같긴하지만 어디를 잘못 이해하고 있는지 모르겠어서 질문 남깁니다 ㅠㅠ

  • c++
  • 코딩-테스트
이효민 댓글 1 좋아요 0 조회수 248

디버깅 참고 답안 강의에서 마지막 문제 질문 드립니다

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

저는 마지막 문제를 Knight가 죽지 않았으면 AttackTarget을 실행하도록 else 부분을 추가하였는데 이 방법은 해결방안에 적합건지 여쭤보려고 문의 남깁니다

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
qkrwotjd345 댓글 1 좋아요 0 조회수 264

포인터 연산

미해결

[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문

포인터 연산 강좌에서 아래와 같이 포인터를 선언하고 사용 하였는데요 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #define SIZE 20 int main() { using namespace std; 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; } 입력을 "판다"라고 하니, 이 구문 실행 결과가 아래와 같이 나오더라구요 복사된 동물 이름은 "판다"이고, 그 주소는 000002369E1F2E90 입니다. [질문1.] ps는 포인터로 선언 된건데, [ cout >> ps >> endl; ]의 출력 결과가 왜 메모리 주소가 아닌 [ 판다 ]인걸까요? [질문2.] 메모리 주소를 출력하기 위해 (int*)ps로 형변환 하는 걸로 되어 있는데, 이 형변환이 어떤 의미인지 잘 모르겠습니다.

  • c++
화면가득 댓글 2 좋아요 0 조회수 414

6-L 가설 세우는게 이해가 가지 않습니다

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

큰돌님 안녕하세요? 오늘 풀이 해설이 이해가 안되서 질문 들고 왔습니다. 1번 가설 2:28 0.5 1 2 0.5 1 0.5 0.5 1 이렇게 세워주셨는데 세번째 줄이 각 0.5, 0.5*1, 0.5*1*2인 것은 알겠습니다. 가운데 줄인 0.5 1은 어디서 나온건가요? 2번 가설 2:41 100 0.5 8 100 20 160 20이 어디서 나온건가요..? 100*0.5는 50이라 100 50 400인게 아닌가요? 3번 가설 3:40 100 0.2 1 1 2 100 20 20 20 40 마찬가지로 20이 어디서 나온건지 모르겠습니다 100 50 50 50 100이 아닌가요? 여러번 돌려보는데 모르겠어서 질문 올립니다.

  • c++
  • 코딩-테스트
mhyim 댓글 1 좋아요 0 조회수 333

1-C 질문입니다!

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/e5f70609e3f54d808199e1e4ce3bcefd 지역변수에서 배열 초기화시 {0}으로 초기화하면 전체가 0으로 초기화 되는것 같은데 해당 방법도 맞는것인가요?(제공해주신 자료에서 전역변수가 메모리도 덜 잡아먹고 자동 초기화로 더 좋은 방법인것은 인지하고 있습니다!, 궁금증에 물어보는것입니당) DEV C++처음 사용해 보는데 디버그시 감시변수를 각각 하나씩 추가해줘야하는건가요...? vs code 처럼 자동으로 모든 코드가 등록되도록 하는 방법은 없을까요...?ㅠㅠ

  • c++
  • 코딩-테스트
아아아아아아 댓글 1 좋아요 0 조회수 310

1-H 코드 질문있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/7bcf990ba2c945ee87c9e35105d5583e 안녕하세요 강사님 1-H 문제 관련 질문이 있어서 글을 남깁니다. 다름이 아니라 코드를 제출했더니 시간초과로 인해 제출에 실패하였습니다. 계속 고민해보았지만 어디서 시간이 초과되는 지 잘 모르겠습니다.

  • c++
  • 코딩-테스트
상언김 댓글 1 좋아요 0 조회수 225

list 중간 삽입 삭제와 임의접근간에 관계성에 대한 질문입니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

질문에 앞서 항상 좋은 강의 감사합니다. 공부하면서 생각난 내용에 대한 질문이있어 글 남깁니다. stl 대표적인 자료구조인 vector와 list에 장단점에 대한 질문들이 면접에서 많이 나오는데 중간 삽입, 삭제 과정에서 결국 vector와 list 둘다 같은 시간복잡도를 가지는게 아닌가 생각이 드는데 잘못 생각한걸까요? Vector 해당 메모리 참조 및 삭제(O(1)) + 데이터 재정렬(O(N)) List 해당 메모리 참조 및 삭제(O(N)) + 참조 노드 개편(O(1)) 아니면 해당 질문에 논점이 전체 과정(참조과정(임의접근) + 삭제 + 삭제 후 재정렬)이 아닌 참조 과정을 제외한 오로지 삽입,삭제 과정 후 참조 노드 개편이 vector의 데이터 재정렬보다 빠르기 때문에 list가 더 좋다고 하는 건가요? 만약 1번에서 중간 삽입, 삭제 과정에서 참조 노드 개편이 vector의 데이터 재정렬보다 빨라서 중간 삽입, 삭제가 좋다고 하는 거라면 면접에서도 vector는 중간 삽입,삭제과정 이후 데이터 재정렬단계가 존재하기 때문에 list가 더 빠르다라고 대답하는 것이 좋은 대답일까요 ?

  • c++
ji980207 댓글 1 좋아요 0 조회수 345

m1 맥 세팅 오류

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 저는 m1 맥으로 진행하였고 강의교안에 있는 두번째 방법 역시 시도했지만 g++ -std=c++14 -Wall a.cpp -o test.out a.cpp:1:10: fatal error: 'bits/stdc++.h' file not found #include <bits/stdc++.h> ^~~~~~~~~~~~~~~ 1 error generated. 위 에러가 계속 생겨서 구글링을 해서 다른 방법을 찾아서 해결했습니다. 혹시 저처럼 헤매시는 분들이 있을것 같아서 링크 남겨드립니다. https://y00n-lee.tistory.com/45 저는 교안에 있는 방법으로는 안되었고 위 방법으로 했을땐 잘 됐습니다.

  • c++
  • 코딩-테스트
shin jiun 댓글 1 좋아요 0 조회수 323

3-O 사다리 조작

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 강사님 오랜만에 질문 올립니다 ! http://boj.kr/73fc760053694b58a0f206eadf8b20ef 기저사례가 좀 많기는 하지만.. 모든 테케 정답 나오고, 강사님 코드와 비교했을 때 check 함수도 거의 흡사하며 재귀함수 실행 횟수가 더 효율적일 때도 있는데요... 틀렸습니다가 나오는 원인을 잘 모르겠습니다 ㅜ ㅜ

  • c++
  • 코딩-테스트
이종현 댓글 1 좋아요 0 조회수 232

인기 태그

인프런 TOP Writers

주간 인기글