이 부분이 이해가 잘 안됩니다 1. 여기서 나타난 cmp함수는 매개변수를 두 가지를 가지는데, sort함수 내부의 매개변수로 이 cmp함수를 사용하며 호출할 때에는 cmp 함수에서 사용 가능한 매개변수를 전달 해 주는 곳이 없는데 어떻게 차례대로 알아서 매개변수를 전달받아 함수를 실행시키는지 이해가 잘 안갑니다. cmp에 들어가야 하는 매개변수가 int형 두개니까 그냥 v.begin부터 두개씩 차례대로 할당하는건가요? 조금 더 자세하게 설명 해주시면 감사하겠습니다.
안녕하세요! 간단한 문제이지만 저도마주했고 이것에 대해 2년전에도 같은 질문이 올라온 것이 보이는데 맥의 vscode에서 코드 실행시 발생하는 문제에 대해 간단한 해결법을 공유하고자합니다. 처음 클론을 하셔서 파일을 받아오셔서 파일 실행을 하려하면 다음과 같은 오류가 발생합니다. 인코딩 방식에 관한 문제로 주황색 부분을 누르시면 가 뜨는데 Save with Encoding을 선택, UTF-8로 변경하시면 이 다음 부터는 코드가 정상실행 됩니다. 감사합니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
16:42 에서 헷갈리는것이 있습니다. test가 "죽었는가?(IsDead)"라는 의미의 변수일때, 처음에 'isInvincible' 을 'true', 즉 값 1로 설정하였으로, 'isInvincible == false' 이것이 '무적이냐? == 아니다' 로 해석될 때, 사망에 적합한 조건(무적아님)으로 해석이 되므로 그 결과가 1이 나와야 하지만, '1(isInvincible)==0(false)' => '0' 이 되어서 무적이 아님에도 불구하고 사망의 조건('1')에 부합하지 않는다는 해석이 되어버리는데 혹시 제가 잘못 이해하고 있는지 궁금합니다. 제 생각에는 isInvincible 변수를 처음에 초기화할때 '0'으로 둔다면 해석으로 보았을떄 정상적으로 작동하지 않을까 싶은데 솔직히 머리도 아프고 잘 모르겠습니다. 제가 잘못 이해하고 있는걸까요?
지금 우선 필수 개념을 듣고 있는데요, 교안을 받아보니까 필수개념 및 전체 강의에 없는 내용들이 있어서요. 어떤 순서(방법)로 공부를 해야하는지 궁금합니다. 교안을 먼저 보고 해야할까요? 아니면 강의를 듣고 교안은 참고하면 되나요? 제가 궁금한건, 필수 개념 부분 먼저 듣고 있는데, 순열의 목차가 알고리즘 교안에는 저기 뒤에 있어요. vector 같은 자료형은 앞에 있는데 또 필수강의나 다른 강의에는 없어서요. 교안을 어디까지 먼저 봐야하는지 / 교안을 어떤 비중으로 봐야하는지 궁금합니다. 또 다른 예로, 그래프이론의 기초 부분가 알고리즘 교안에는 없어요.
안녕하세요 선생님, 강의 항상 잘 듣고 있습니다. 선생님께서 사용하신 로직과 같은 방법을 사용했는데, 시간초과 오류가 납니다. http://boj.kr/c4454b07d21146c28d0b7044d67959ff 어디서 잘못 되었는 지 알 수 있을까요? 확인해주시면 감사하겠습니다. 감사합니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의영상 21:47분쯤에 이미 찾은 값이라고해서 number[i] == randvalue랑 비교하는 조건식이 있는데요 현재 number배열에는 아무것도 들어가있지 않은 상태아닌가요? 코드를 쭉 봤는데 랜덤수를 넣어주는 곳이 없어서 도대체 무엇이랑 비교를 하는건가요??다른 부분은 다 이해되는데 지금 로또번호가 이해가 안됩니다.. ㅠ 그리고 하나더 int randomvalue = 1 + (rand() % 45); 를해서 이 randomvalue를 number[i]에 for문으로 6번넣어서 출력을 할려했는데(중복 생각안하고) 근데 출력이 안됩니다 이게 계속 그래서 뭐가 문젠지 몰라서 제가 변수를 지우고 그냥 number[i]에 number[i] = 1 + (rand() % 45);를 직접적으로 대입해주니 출력이 잘 됐습니다 혹시 그 이유를 여쭤봐도 될까요??
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
제가 처음 강의를 보지 않고 만들었을때에는 void Sort(int numbers[], int count){ for (int i = 0; i < count; i++) { for (int j = 0; j < count; j++) { if (numbers[i] < numbers[j]) { int temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } } }이런식으로 만들었는데요 혹시 정상적으론 동작하는데 꼭 강의에 나와있는대로 만드는게 어떤 좋은 부분이 있을까요??
#include <bits/stdc++.h> using namespace std; vector<string> split(string input, string delimiter){ vector<string> ret; long long pos = 0; string token = ""; while((pos = input.find(delimiter)) != string::npos){ token = input.substr(0,pos); ret.push_back(token); input.erase(0,pos+delimiter.length()); } ret.push_back(input); return ret; } int main(){ string s = "abcddabcddabcdabcabcdd", d = "d"; vector<string> a = split(s,d); for (string b : a) cout << b << endl; } 안녕하세요 선생님 수업 재밌게 듣고있습니다. split함수도 잘 이해가 됐습니다. 그런데 질문 있습니다. 만약 제가 만든 문장으로 split을 하면 제 생각에 결과는 선생님이 알려주신 코드로 돌리면 {abc,"",abc,"",abc,abcabc} 가 나올것입니다. 왜냐면 코드상에서 빈 문자열이 되더라도 token을 ret에 삽입하고 있기 때문입니다. 그렇지만 제 생각에 올바르게 나오는것은 {abc,abc,abc,abcabc} 가 나와야 올바를것 같습니다. split이라는 함수가 token이 빈 string이 되더라도 무조건 vector에 삽입하는게 옳지 않다고 생각하는데 어떻게 생각하시나요? 다음은 위 코드의 출력입니다. 이상입니다. 감사합니다.
안녕하세요! 오랜만에 c++잡아보는데 갑자기 궁금한 게 생긴 것이 아래에서 f10로 디버깅 진행한다면 for문을 만나 for문에 들어가게 되는데, 이때 for반복문을 탈출하고 바로 밑 코드로 탈출하는 디버깅 단축키가 있을까요..? 분명히 자주 썼었던 기억이.. 서칭해보면 shift+f11가 있긴 한데 이건 함수 같은 곳에서 탈출하게 되는 것이고 밑의 for문에서 사용시 그냥 디버깅이 종료되는 것 같은데 이것 말곤 안 나오는 듯 합니다 :( 감사합니다. int main() { for (int i = 0; i < 1000; ++i) { 0; } std::cout << "ok" << std::endl; return 0; }
아래의 코드를 type.cpp파일에 작성하고, ➜ c++ git:(master) ✗ g++ -std=c++14 -Wall type.cpp -o type.out 컴파일을 했을때, 해당 NULL로 초기화가 안되는데 뭐가 잘못된 걸까요? ➜ c++ git:(master) ✗ g++ -std=c++14 -Wall type.cpp -o type.out type.cpp:35:14: warning: implicit conversion of NULL constant to 'char' [-Wnull-conversion] char c = NULL; // c에 NULL 매크로 할당, 이는 '\0'과 동일 ~ ^~~~ '\0' 1 warning generated. #include <bits/stdc++.h> using namespace std; int main(){ char a = '\0'; char b = 0; char c = NULL; string d = ""; cout << "hello"; if(a == b) cout << 1; // a와 b는 동일하므로 1 출력 if(b == c) cout << 1; // b와 c도 동일하므로 1 출력 // string(1, a)는 a를 하나의 문자로 가지는 문자열 생성, 이는 "\0"과 같음 if(string(1, a) == d) cout << 1; }
안녕하세요 선생님 항상 강의 재밌게 풀이 해주셔서 감사합니다. http://boj.kr/687f2bbe76514a2f9614c1a633e26717 문제를 풀면서 다른 풀이 방식으로 접근을 하였는데, 궁금한 점이 생겨 질문드립니다. 이중 for문을 사용하면 시간복잡도가 O(n^2)으로 생각하여 위 링크와 같이 생각을 하였는데, 이런 방식으로 접근하여도 올바른 접근법인가요?
http://boj.kr/480d56cedce24b1887732ad80aad6c12 선생님, 안녕하세요~ 이번 문제를 풀때 누적곱을 이용했는데요. 제일 앞부분에 1을 넣어놓고, n+1번째에 누적곱을 넣은 누적곱의 배열을 만들었습니다. 그리고, 이중 반복문을 진행하면서 a[i]를 a[j]로 나눠보며 최대값을 구해봤는데요. (a[0]는 1이라서, a[i]를 a[0]로 나누면 i번째 까지의 누적곱, 그 이후부터는 연속된 앞부분으로 나눈 것) 이중반복문으로 했다보니 시간초과가 나면 그렇구나 할텐데, 답이 틀렸다고 하니, 어디가 틀렸는지 잘 모르겠습니다. 처음부터 잘못 생각한 걸까요? 아니면 코드를 어딘가 잘못짠 부분이 있는걸까요?
큰돌님 안녕하십니까 커뮤니티 찾아보니까 insert 함수 첫 번째 인자는 이터레이터 값이 들어가야 해서 begin() + '넣어줘야 할 위치' 가 들어가야 오류가 안 나고 정상 작동한다고 봤는데 http://boj.kr/9fc8f9dd8de44b04b979a877da3962fd 이렇게 해도 백준에서 맞다고 합니다. 또 Programiz(c++ online Compiler)로 코딩하는데 오류 안 나고 잘 작동해서 해서 질문드립니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
제가 이해한게 정확한지 궁금해서 그러는데요예를들어 배열로 char[] a = "abcef";를 만들어 줬다고하면배열은 모든 문자를 한글자씩 밀어넣는다고 하면 char이 1바이트니까 제가 만든 배열은 NULL값도 포함해서 총 6바이트가 되는게 맞는건지 궁금하고요 만약 맞다면 그러면 int타입의 배열로 선언하면 예를 들어 char[] b = {1, 3, 4}로 선언하면 int는 4바이트니까 총 NULL값까지 16바이트의 크기가 되는건가요? 그리고 포인터는 32비트 혹은 64비트냐에 따라 무조건 4바이트 혹은 8바이트 고정크기인데 이유는 포인터를 이용해서 문자열을 만들면 예를들어 "Hello World"를 넣는다고하면 먼저 데이터 영역 어딘가에 Hello World의 배열이 만들어지고 그 배열 첫번째 요소인 H의 주소를 가리키는 포인터다라고 해석했는데 맞을까요??
http://boj.kr/9bb703b0a79748328575376a22d93db1 안녕하세요 선생님 강의 잘 듣고 있습니다. 강의 에서는 if문에 if문을 적용하여 풀이를 하였는데, 공유드린 소스처럼 26의 나머지 값을 사용하여 풀어도 괜찮을까요? 결과는 동일 한데 어떤 방식으로 접근하는게 더 효율적인 접근방식인지 궁금합니다.