묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
비가 안 오는 경우도 고려해야 되니까 ret=0아니고 1인건가요?
아무것도 잠기지 않는다는 말(a[][]가 모두 101 이상인 경우)이랑 비가 안오는거(d=0)랑은 다르잖아요무조건 비가 오는 게(1<=d<=100) 아닌가요? 비가 안 올 수 도 있는 게 상식이니까 그런가요문제 설명중 노트에 힌트라고 아무도 안 잠길 수 있다 라고 적어둔게 전혀 도움이 안 되는 문제 같네요 대놓고 비가 안 올 수 있다고 해야 하지 않나요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 compare 함수 질문
안녕하세요 큰돌님. 120p string으로 이루어진 배열을 정렬한 코드에 대해 질문드립니다.제가 이해한 바로는 compare라는 함수는 문자열의 길이를 비교하는 함수입니다.if(a.size() == b.size()) return a < b; 는 문자열의 길이가 같으면 a b 크기를 비교합니다. 이 때 비교하는 기준은 아스키 코드입니다.만약 문자열의 길이가 같지 않으면 크기를 비교해서(아스키코드 기준) 바로 boolean 값을 반환합니다.111은 222와 아스키코드적으로 비교를 하게되는데.. 이때 1의 아스키코드는 49이고 2의 아스키 코드는 50입니다. 111이 a, 222가 b 이니까 a < b 는 T가 됩니다.111은 이제 33과 비교를 하게 됩니다. if문에 해당이 되지 않기때문에 바로 return a.size() < b.size() 를 하게 됩니다. a가 111, 33이 b이고 a의 size는 3, b의 size는 2입니다. 결과적으로 F가 됩니다.여기서 드리고 싶은 질문은F가 되면 순서를 바꾸는건가요? 그렇담 왜 33,222,111 가 되지 않는건가요?111과 33은 아스키코드순으로 비교할 필요가 없지 않나요? 자릿수가 다르니까 a < b를 할 필요가 없을텐데.. 왜 교안에는 아스키코드순으로 비교한다는 내용이 실려져 있는건가요? 없어도 되는 내용인것 같은데…. 실려져 있어서 제가 잘못 알고있는건지 너무 헷갈립니다…
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
코드 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Spirte 코드 44~52번줄 부분에서 { } 안에 적는 이유는 코드 정리를 깔끔하게 하기 위함인가요? 아니면 다른 이유가 있는건가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
싱글톤 말고 다른 디자인 패턴도 필요한가요?
싱글톤 강의를 보고 디자인 패턴에는 여러가지가 있다는 것을 알게되었습니다.다른 패턴도 따로 공부를 하는게 도움이 될까요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
V -> VInv 에서 CameraPosition 을 뽑아쓰는 이유가 이게 맞을까요?
듣다가 뇌가꼬여서.. 질문드립니다.V월드에 배치된 오브젝트들을 카메라를 원점으로 한 좌표로 바꿔주고 VInv카메라 로컬기준 오브젝트들을 다시 월드기준으로 변경시켜준다 카메라 움직임 자체에는 이상이 없음.문제점 : 조명효과(보이기엔 Emissive) 그래서 V -> VInv 로 한 이유는 Emissive 효과에선 물체에서 카메라까(눈) 벡터가 필요한데 (월드에 배치된 물체에서 월드에 배치된 카메라의 벡터가 필요) 기존 CameraPosition 은 V 면 항상 카메라가 원점이니깐 회전을 시켰을때 제대로 적용이 안됐다. 그래서 CameraPosition 을 VInv 에서 뽑아내서 월드 좌표로 바꿔줬다.. 란 제 결론이 나왔습니다.. 이게 맞을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-K lis 배열과 ans의 차이
안녕하세요 선생님.코드는 선생님의 코드를 참고 하여 질문드립니다!코드 이해를 위해 디버깅을 하는 중 테스트 케이스로610 20 9 30 8 50위 값들을 넣었을 때,출력되는 값은410 20 30 50 이지만lis 배열에 남은 값은8 20 30 50 이었습니다.제가 아직 lis 배열의 의미와*lowerPos = num; 으로 바꿔주는 부분에 대해 잘 이해하지 못한 것 같습니다.lis 배열은 그저 정답을 구하기 위한 임시적인 배열이 맞을까요?
-
해결됨삼각형의 실전! CMake 초급
CMake 심화 - CMake 설치 실습 관련 문제
안녕하세요. 강의 정말 잘 들었습니다. 완강하고 나서 cmake 개념이 잘 잡혀서 실무에 도움이 많이 될 것 같습니다.실습을 수행하던 도중 install 실습에서 문제가 발생했는데요. 강의는 "CMake 심화 - CMake 설치" 입니다.강의 영상과 동일한 명령어를 수행했음에도 installing이 수행되지 않는 증상입니다.cd installing mkdir build cd build cmake ..위 작업은 정상적으로 수행이 잘 되고, 아래와 같은 출력결과가 나옵니다.-- The C compiler identification is AppleClang 14.0.3.14030022 -- The CXX compiler identification is AppleClang 14.0.3.14030022 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- BINDIR: bin -- LIBDIR: lib -- INCLUDEDIR: include -- DATAROOTDIR: share -- Configuring done (0.8s) -- Generating done (0.0s) -- Build files have been written to: /Users/user/wd/practice-cmake/installing/build 이후 강의에서는 아래 명령어를 수행하는데, install이 수행되는 것이 아닌 다시 cmake configure와 generate 과정이 수행되는 것으로 보입니다.cmake .. --install-prefix=/Users/user/wd/practice-cmake/installing/build/install다음과 같은 출력결과가 나옵니다.-- BINDIR: bin -- LIBDIR: lib -- INCLUDEDIR: include -- DATAROOTDIR: share -- Configuring done (0.1s) -- Generating done (0.0s) -- Build files have been written to: /Users/user/wd/practice-cmake/installing/build MacOS와 Ubuntu 환경에서 모두 동일하게 문제가 발생했는데요, 제가 어떤 부분을 빠뜨린 것인지 궁금합니다.감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 질문이 있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 내용 1분~3분에서 말씀하신 내용이 이해가 가질 않습니다. a->d로 간다 했을 때 {a, b, c}의 최소값을 찾아서 d로 가면 된다고 하셨는데 제가 저 말뜻을 제대로 이해했는지는 모르겠지만 제가 생각했을 때는 저 셋을 가는 경로에서 최솟값은 아니어도 d로 갔을 때 최솟값이 되는 경로도 존재할 거라고 생각이 들어서 {a, b, c}경로의 최솟값에서 d로 가면 그게 또 최소 경로?가 된다는 건 이해를 잘 못하겠습니다. 코드를 따라 쳐보면서 코드 자체 만으로도 이해를 해보려 했는데 tfs함수 부분에서 ret을 저렇게 메모이제이션 처리를 하면 무슨 이득이 있는지 모르겠습니다. 제 생각에는 경로가 a b c d 라고 했을 때 (경로가 모두 0이 아니라고 했을 때)a b c da b d ca c b da c d ba d b ca d c b이런식으로 탐색을 할 거라고 생각이 드는데 결국 완전탐색 느낌으로 탐색을 한 게 아닌가? 라는 생각이 듭니다. if (ret != -1) return ret;이 부분이 메모이제이션을 써서 얻을 이득일텐데 저게 a b c d를 돌면서 작동을 하지 않을 거라고 생각이 드는데... 왜 저 코드가 필요한지 잘 모르겠습니다. 막상 실제로 저 부분 빼고 제출하니까 시간초과가 나기는 하는데 제 머리로는 도저히 이해가 안갑니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
c++ 강의 듣고있는데 혹시 강의자료가 있을까요?
강의 자료가 없다면 참고하면서 볼 서적이 있는지도 궁금합니다사실 fundemental c++ 프로그래밍 원리 라는 책을 제가 주문했습니다만은앞의 어셈블리어 파트는 이럴만한 레퍼런스가 없어서 복습할 때 뭘 보면서 해야 할지 모르겠네요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-I문제 / 시간 빡세다의 정의 궁금증
틀린 코드 : https://www.acmicpc.net/source/share/848fc68966ae4518833cbfa48bae9862 우선 강의를 보고 밑의 코드를 넣어서 문제는 해결한 상태입니다. 아마 시간초과 난 부분도 I/O 부분에서 많이 잡아먹어서 그런 것 같습니다. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 강의 내용 중에 시간초과가 빡세서 위의 코드를 넣어야 한다고 했는데, 코드를 넣는 것과는 별개로 어떻게 시간초과가 빡센지 문제를 풀면서 생각할 수 있을까요?? 제 논리구조는 아래와 같습니다. 첫 번째 반복문 O(NlogN)코드 상 첫번째 반복문에서는 입력을 N번 받고, map에 넣는 경우는 O(logN) 두 번째 반복문 O(M * (logN + T)) 우선 M번 반복하고, 반복할 때마다 문제를 받는데, 해당 문제의 input을 int로 변환하는 과정 O(T) (문자열 길이 T가정)map에서 탐색하는 과정 O(logN) => 총 시간복잡도 = O(N *( log(N) + T )(M과 N의 최대 범위 같으니 동치해 봤습니다)사실상 T의 길이도 최대 20이어서 미미해서 O(NlogN)이라고 판단했습니다. 저는 1초 = c++에서 1억번이라고 들어서 그것을 기준으로 잡고 해봤습니다.(혹시 이렇게 정의해도 되는건지요?) 단순히 입력값으로 계산만 해봐서는 100000 * log(100000) = 약 160~170만최대 20자인 문자열을 고려해도 => 약 3000만회널널하다고 생각 이렇게 해서 저는 시간초과가 생각보다 빡세지 않다고 생각했는데, 제가 한 논리중에 잘못된 부분이 있는지도 궁금하고, 어떻게 하면 이 문제에서 1초라는 시간초과가 빡세다는 점을 캐치할 수 있는지 궁금합니다.감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 시간 초과 원인을 파악하기 어렵습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/edd8ff505fdf4958ad6c322bae97ec8d 혹시 로직에 문제가 있어 시간 초과가 생기는 것인지, pair를 사용해서 시간 초과가 생기는 것인지 궁금합니다. 만약 pair를 사용해서 시간 초과가 생기는 것이라면, 제 생각에는 pair가 큰 영향을 주지 않을 것으로 생각되는데 혹시 어떤 이유에서 pair가 실행 시간에 영향을 줄 수 있는지 궁금합니다. 또, 만약 그렇다면 코딩 테스트에서 pair를 사용하지 말아야 할 경우를 어떤 근거로 판단할 수 있을지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
순열 조합은 시간복잡도 n!인가요?
n이 너무 커지면 못쓰겠네요??
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
SRT Rotate 부분 값이 이상한 것 같습니다
1번값이 나오려면 2번에서 s와 -s가 바뀌어야 하는것 아닌가요? 1번의 X = xcos - ysin 이 나와야 하면 v와 M의 첫번째 행을 곱해야 X가 나오는데지금의 RotationZ행렬은 xcos + ysin이 나올것 같은데요...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1781번 질문있습니다
https://www.acmicpc.net/source/share/60c52b6bc2b540bb8d1b1a57d4ce090d기존에 문제를 풀었던 2109번과 동일한 로직이라고 생각되어처음풀때 사용했던 제 로직을 이용하니 문제가 틀렸다고 나와서요, 추후에 큰돌님이 2109번강의해주셨을때 사용했던 로직도 같은로직이라 생각되어 해당 소스를 사용시 정답이 되어서 이부분이 잘이해가 안가서 질문을 남깁니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2차원 배열 회전 강의 올려주시면 안될까요
교안만 봐서 잘 모르겠습니다 ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C++
extern 전역변수 주소값
header 파일에서 전역상수를 미리 초기화하면 헤더를 부를때마다 다른 주소값이 할당된다고 하셨습니다. 그래서 cpp 파일에서 초기화를 따로 해주었습니다.그런데 cpp 파일에서 전역변수를 미리 초기화하면, 모든 다른 파일들에서 동일한 주소값이 할당되던데, 제가 맞을까요? 테스트로 돌려본 코드 첨부합니다. #include <iostream> extern char x; // 이미 extern 에서 초기화됐으면 다시 초기화 x // 아직 초기화 안했으면 여기서 초기화 -> 그럼 다른 파일에서 초기화 안돼!!!!!!!!!!!!!!!! extern void test(); int main() { x = 'm'; // extern에서 초기화 됐어도 변경 가능!!! std::cout << ::x << "\n"; std::cout << x << " " << static_cast<void*>(&x) << "\n"; // 변경 된 것 확인할 수 있음 test(); // 여기서도 변경 return 0; }extern char x = 'e';#include <iostream> extern char x; void test() { x = 't'; std::cout << x << " " << static_cast<void*>(&x) << "\n"; }물론 extern 변수를 선언만 한 후, main 함수가 있는 cpp 파일에서 초기화를 하더라도 마찬가지입니다.#include <iostream> extern void test(); extern char h = 'h'; int main() { h = 'u'; std::cout << ::h << " " << static_cast<void*>(&h) << "\n"; test(); return 0; }extern char h;#include <iostream> extern char h; void test() { h = 'j'; std::cout << ::h << " " << static_cast<void*>(&h) << "\n"; }감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-P 질문이 있습니다!
http://boj.kr/511ca2fd92df4f8886ede64c256bd10e안녕하세요 선생님!재귀를 이용하여 양옆의 톱니들과 비교해 계속해서 갱신해 나가는 방법으로 로직을 구현하였습니다.테스트 케이스로 테스트 중 일부는 맞고 일부는 틀리게 결과가 나옵니다.디버깅도 해보았으나 적절한 문제점을 찾지 못하였습니다.혹시 로직에서 틀린 부분이 있을까요?제 눈이 더 이상 보이지 않아서 질문 드립니다ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-B counting star 질문
안녕하세요 선생님for(char a : str){cnt[a - 'a']++;}이 부분이 이해가 잘 되지 않습니다..ㅠㅠ cnt[a-'a']++ 이면 cnt[0]의 인덱스만 증가한다는 거 아닌가요??아니면 여기서 a가 str배열을 나타내고 있는 것인가요?어떤 메커니즘인지 잘 모르겠습니다ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다.
문제 : 긍정왕 홍철이의 구걸 여행제가 코드는 다 맞았는데 ny,nx를 전역변수로 해주니 값이 다르던데 왜 다른지 잘 모르겠습니다.보통 ny,nx는 지역변수로 해줘야 하나여?#include <bits/stdc++.h>using namespace std;int a[3][3] = {{10,20,21},{70,90,12},{80,110,120}};const int dy[] = {-1,0,1,0};const int dx[] = {0,1,0,-1};int visited[3][3];int ny, nx;vector<int> v;void print() { for(int i : v) cout << i << ' '; cout << '\n';}void dfs(int y, int x) { visited[y][x] = 1; v.push_back(a[y][x]); if(y == 2 && x == 2) { print(); return; } for(int i = 0 ; i < 4 ; i++) { ny = y + dy[i]; nx = x + dx[i]; if(ny < 0 || ny >= 3 || nx < 0 || nx >= 3) continue; if(visited[ny][nx]) continue; dfs(ny,nx); visited[ny][nx] = 0; v.pop_back(); }}int main() { dfs(0,0);}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 일곱난쟁이 공유 소스 오류 질문
선생님께서 올려주신 공유 소스를 dev c++ 컴파일 하였을 때 오류가 납니다 ㅠㅠ 문제가 무엇일까요? 마지막 for(int i : v) cout << i << " "; 여기서 빨간 표시가 뜨더라구요..!!http://boj.kr/6b0acb8d4af043f88800c74b72d7761010 9 C:\Users\PC\Desktop\AA\main.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++1129 14 C:\Users\PC\Desktop\AA\main.cpp [Error] range-based 'for' loops are not allowed in C++98 mode