묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split 함수 vs istringstream & getline 이용
안녕하세요 강사님! 해당 문제와는 관련이 없지만 궁금해서 질문을 남깁니다!'c++ split'을 검색하였더니 sstream을 include 하여 istringstream과 getline을 이용하여 vec에 구분자를 기준으로 저장되는 것으로 보이는데, 이는 강사님이 교안에서 만드신 split 함수와 어떤 차이가 있는 것인가요?string str = "java c++ c python";istringstream ss(str);string stringBuffer;vector<string> vec;while(getline(ss, stringBuffer, ' ')){ vec.push_back(stringBuffer);}
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 질문입니다.
안녕하세요! 강의 너무 잘 듣고 있습니다!해설강의를 보고 풀이법은 이해가 갔습니다. 하지만 제가 기존에 짜던 코드가 시간초과가 발생하는데, 이는 어떠한 원인으로 생기는 것인가요? check 배열로 이미 방문한 것은 큐에 넣지 않으면서 최대한 시간을 단축했다고 생각했는데....봐주시면 감사하겠습니다!http://boj.kr/0730ff444ed64c5caac066c698d858e0
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
강의중 궁금한 내용이 있습니다
강의중 마지막에 공백을 제외한 문자수 가 10 개로 디버깅되는데p a n d a c o d i n g 는 11글자인데 왜 10개로 나오는건가요?
-
미해결홍정모의 따라하며 배우는 C++
5:59 friend로 처리하는 부분에 질문이 있습니다.
friend로 함수 처리를 하시면서 하신 말씀이불편함을 조금더 없애기 위하여 파라미터의 getCents()를 안통하게 하기위해 friend로 함수 처리를 하면된다고 하시는데friend로 처리를 하나 안하나 똑같이 작동하며 아래 출력 코드에서 고친것이 하나도 없으신데 getCents()를 안통한다고 하신것이 이해가 안가 질문을 드립니다처음에는 getCents()를 쓰는것이 코드가 길어보이고 귀찮으니까 코드를 줄이기위해 getCents()를 제거하기위해 하신줄 알았습니다.operator + 함수 내부의 return 코드를return Cents(c1 + c2); 처럼요.
-
미해결홍정모의 게임 만들기 연습 문제 패키지
(20.4 참고) 20.4에 해당하는 가이드 페이지가 어디있는지 모르겠습니다.
Vcpkg를 이용해서 opengl, glew, glfw3 설치(20.4 참고)위 글을 보면 20.4를 참고하여 설치하라는 것 같은대요. 20.4가 어디에 있는지 무엇을 참고 해야하는지 모르겠습니다. 유튜브를 통해 c / c++을 듣고 api를 듣는 도중 해당 강의를 알게 되어 해당 강의를 우선적으로 듣고 api를 들어보는게 좋을 것 같아서 구매를 했는대요. 20.4 / 20.5 / 20.6 참고하라는 말이 있는대 어디를 들어가야 참고할 수 있는지를 모르겠습니다. 알려주시면 감사하겠습니다. ㅜㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E string 변환 관련 질문입니다.
http://boj.kr/2542b28a9bec4124a70ea89129f2293c선생님 코드처럼 string(1, a[y][x]) 이런 식으로 문자열로 변환하면(( ( ))( )( ))이런 식으로 문자열이 깨져서 to_string(a[y][x])로 바꿔서 통과한 상태입니다.제 코드에서 string(1, a[y][x])이 작동하지 않는 이유가 무엇인지 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C++
멤버변수와 생성자의 관계 질문
마지막질문 멤버변수에서 초기화를 하지 않으면 멤버변수가 선언될때는 메모리를안받고(쓰레기값도 저장안됨)멤버변수가 메모리를 받는곳은 생성자부분인가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4 - F 1062번 가르침, 가르침이 필요합니다!
안녕하시렵니까?강의 재미있게 듣고 있습니다. 선생님 강의를 수강하고, 백준 잔디 채우는 일에 빠져 열심히 문제를 풀고 있네요!하지만, 4주차 F번째인 1062번째 가르침에서 고난을 마주하게 되었습니다ㅠㅠ선생님의 해설 강의를 보고 로직은 이해한거 같은데, 저의 방식대로 풀어보려하니 도무지 어디가 틀린 것인지 모르겠습니다.http://boj.kr/f915fd53647443ee9dac1ff8741a5b5d문제의 조건 중 a, n, t, i, c가 무조건 포함되기 때문에, 이를 제외하고 나온 알파벳의 모든 경우의 수를 체크하여 문제를 풀면 조건 시간 내에 해결할 수 있지 않을까하는 아이디어로 문제를 풀어보았습니다. 계속 고민을 해보아도 어떤 반례가 있는지 도무지 생각이 안나 이렇게 질문을 올리게 되었습니다.바쁘시겠지만 한번 봐주시면 큰 도움이 될 듯합니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 문제 난이도
안녕하세요, 이번 달에 강의를 듣기 시작한 학생입니다. 현재 알고리즘에 대한 지식이 있고 이전부터 코딩테스트 문제들을 조금씩 풀어본 상태입니다. 강사님의 강의를 아직 많이 들어보진 않았지만, 초반부를 듣다보니 궁금한 점이 생겨 이렇게 여쭤봅니다.강사님께서 강의를 하시는 문제들이 백준에서 어느정도 난이도인지 궁금합니다...보통 대기업의 코딩테스트를 보려면 '골드 몇 이상, 실버 몇 이상, 플레 몇 이상'이라고 하는데,제가 수강한 강의 앞부분은 대체로 쉬워서인지 대기업을 준비하는 입장의 난이도는 아니라고 생각합니다...혹시 뒷부분에 있는 문제 난이도가 어느정도인지 알 수 있을 까요??감사합니다.
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
크루스칼 vs 프림
안녕하세요강의를 듣다 문득 궁금한게 있어서 질문드립니다.최소스패닝트리를 구할때크루스칼, 프림이 있는걸로 알고있는데요..제가 듣기론 일반적으로 크루스칼이 프림보다 효율적이다 라는 얘기를 들었습니다.위 말이 맞을까요?특수한 경우에만 더 효율적인건지 궁금합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K질문입니다!!
안녕하세요 강사님 강의 잘 듣고 있습니다!http://boj.kr/7f875032bef04870b36d219af2266f5e홀수 개수인 알파벳이 2개 이상이면 바로 쏘리 한수 출력하며 종료2개 이상인 알파벳은 해당 개수의 절반만큼 순서대로 붙여나감바로 위의 문자를 뒤집어 놓은 문자열 임시 저장홀수 개수인 알파벳이 존재한다면 붙여놓은 문자열(2번 순서)에 해당 알파벳 추가뒤집어 놓은 문자열 추가이 방식으로 진행한 결과, 예제는 모두 다 통과하였지만 오답으로 결과가 나왔습니다.어떠한 점이 잘못되었는지 알려주시면 감사하겠습니다!
-
미해결C++20 훑어보기
C++ 14 ReadWrite Lock 질문드립니다
게임서버에서 직접 RWLOCK을 만들었었는데C++14에 정규문법으로 추가가 되었으면 쓰는것은 어떤가요?
-
미해결홍정모의 따라하며 배우는 C++
9.1 산술 연산자 오버로딩
안녕하세요, 양질의 강의에 감사하며 수강하고 있습니다. 강의 1:40쯤 getCents()함수를 2개 만드는데요,int getCents() const { return m_cents; } int& getCents() { return m_cents; }아래 참조형 반환 함수는 왜 만든 건가요?이번 강의를 끝까지 봤는데도 어떤 용도로 사용되었는지 잘 모르겠습니다.(강의에 따르면 <클래스 외부 함수에서 클래스의 private멤버 변수에 접근하기 위한 방법>을 생각하면서 나온 듯한데.. 잘 모르겠습니다.)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 19페이지 질문있습니다.
#include <bits/stdc++.h>using namespace std;typedef long long ll;int main() {ios::sync_with_stdio(false);cin.tie(NULL);string s = "123";s[0]++;cout << s << "\n"; // 223return 0;}이 부분에서요typedef long long ll;ios::sync_with_stdio(false);cin.tie(NULL);이 세줄이 이해가 되지 않아요 지우고 실행해도 결과값은 똑같던데 무엇인지 알려주세요!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
Value(값)으로 리턴하는 함수의 리턴 값을 받을때에 대한 질문드립니다.
안녕하세요, 추석 잘 보내고 계신가요?다름이 아니라, 여쭤볼 것이 있어서,제가 UE4 C++을 코딩하면서여러 습관들이 있는데, 그 중 하나가 제가 거의 포인터가 아닌 참조를 선호하고,Data를 Write가 아닌 Read일때 const 참조로 도배를해버리는데, 심지어 불가피하게 포인터를 사용할 경우예를들어,Human* const human = 객체 주소;이렇게 const 를 중간에 박아서, 어셈블리어를 까볼때참조형이랑 같게 한다든지const Human* const human = 객체 주소;이런식으로 하면 const Human& human = 객체;와 동의어라고 생각하여 const Human* const human;이런식으로 사용합니다. 첫번째 질문 ]함수의 매개변수 / 함수의 반환값을 받을 때데이터가 순전히 Read용도로 사용할 경우그냥 습관적으로 const 자료형& 을 사용합니다.이런 습관이 맞는지에 대해서 여쭤봅니다. 함수 내부에 지역 변수를 리턴하는 값을 const 참조형으로 받는게 좋은지일반적으로 Value로 받는게 좋은지에 대해서 여쭤봅니다. 물론 함수 지역 변수를 리턴하는 것을 그냥 참조로 받으면 해당 줄이 끝나면 리턴을 하는 함수의 CallStack 에서해당 함수 프레임이 pop 되면서 사라지기 때문에 VC가 잡아주어 빨간줄이 나겠지만, 그냥 참조가 아닌 저는const 참조로 받는게 습관입니다. vector<Human> GetHumanVector(){vector<Human> HumanVector = '동적할당 해서 배열 값 세팅 전부하고'return HumanVector; // 지역 변수 동적 배열을 리턴}int main(){const vector<Human>& HumanVec = GetHumanVector(); // 1번째 경우 : 저의 스타일const vector<Human> HumanVec = GetHumanVector(); // 2번째 경우 : 값으로 Receive 하는 것} 1번째 경우와 2번째 경우, 저는 1번째 경우를 사용하는데 2번째 경우로 저렇게 받아버리면 값 복사가 되면서GetHumanVector(); 이 const vector<Human> HumanVec 전달 해줄때 순간적으로 메모리 사용량이 2배가 되지 않을 까 생각이 되어무조건 참조로 받는 것이 옳다라고 생각합니다.만약에 저 배열의 크기가 500MB라고 가정을 해봤을때2번째 경우처럼 값으로 받을 경우 컴파일러가 해당 줄을 실행을하고 값을 전달을 할때 1GB가 메모리가 사용될 것이다.라고 어디서 선생님이었나 책이었나 본 것 같아서메모리 효율적 사용이라는이러한 당위성으로 인해 저는습관적으로 저렇게 사용하는데 혹시 제 기억이 틀린건지적어놓은 공책이 있었는데 없어지고 검색을 해봐도딱히 비슷한 예제가 안올라와서R.V.O 리턴 값 최적화 정도로 함수 리턴할떄 값으로 리턴해도 된다. 이 정도 내용 밖에 없네요1) const vector<Human>& HumanVec = : const 참조로 받는 게 좋을지2) const vector<Human> HumanVec = : const로 받는게 좋을지 선생님의 의견은 어떠신지요 두번째 질문 ]혹시 1)을 사용할때 간헐적으로 버그가날 수 있나요?저는 없다고 보는데 일단 참조는 컴파일 타임에 생성과 동시에 초기화가 되고, 일단 const로 받아서 빌드 돌릴때는 문제가 없는데런타임때 버그가 날 확률이 조금이라도 있을까요???
-
해결됨홍정모의 따라하며 배우는 C++
FruitType이 private이면 어떻게 초기화시키나요?
이번 강의에서는 생성자 parameter로 FruitType 변수를 받고 있는데 만약 FruitType이 private이면 main()에서 어떻게 초기화를 시킬 수 있나요?
-
미해결홍정모의 따라하며 배우는 C++
else if 문 질문
else if 문을 언어적의미로 접근해보면if : 만약 이거면else if : 또 다른 조건 제시 인데 그냥 if 문을 두개 쓰는거랑 if~else if 문을 쓰는거랑 큰 차이가 있나요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스택 관련 어셈블리어에서
스택 관련 어셈블리어에서 mov와 push가 컴파일러에 따라 다르게 나올 뿐 동일한 기능을 하는 것이라면main 함수 스택프레임의 지역변수 a,b에 대한 mov 어셈블리어를 실행했을 때에는 esp에 변화가 없었지만MultiplyBy 함수 스택프레임의 매개변수 a, b에 대한 push 어셈블리어를 실행했을 때에는 esp에 변화가 생겼었는데 왜 그런지 궁금합니다;; 그리고 1개 함수의 스택프레임에는 매개변수 + 반환 주소값 + 이전 함수 ebp + 지역변수가 들어가는 것으로 알고 있습니다그런데 막상 sub esp, ...을 통해서 해당 함수가 사용할 스택프레임의 영역을 정할 때에는 이미 4개 요소 중 3개가 이미 저장된 상태 같은데 왜 이렇게 되는 것인지 모르겠습니다(매개변수와 반환 주소값은 이전 함수에서 세팅을 해준다고 하더라도 일단은 해당 함수의 스택 프레임에 속할 텐데)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-P 질문 있습니다.
95%에서 틀렸습니다가 나옵니다.. 시뮬레이션인데 예외가 있는지 궁금합니다..확인하는 함수까지 첨부합니다..#include <bits/stdc++.h> using namespace std; // #define FIO ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); int T, K, cnt; int gears[1001]; int rotRight(int gear) { int temp = gear & 1; int res = (gear >> 1) | (temp << 7); return res; } int rotLeft(int gear) { int temp = gear & (1 << 7); int res = (gear << 1) | (temp >> 7); return res; } void rotate(int idx, int dir) { int low = 1, high = T; for (int i = idx; i > 1; i--) { int rightGear = (gears[i] & (1 << 1)) << 4; int LeftGear = gears[i - 1] & (1 << 5); int dif = rightGear ^ LeftGear; if (!dif) { low = i; break; } } for (int i = idx; i < T; i++) { int LeftGear = (gears[i] & (1 << 5)); int rightGear = (gears[i + 1] & (1 << 1)) << 4; int dif = rightGear ^ LeftGear; if (!dif) { high = i; break; } } if (dir == 1) { for (int i = low; i <= high; i++) { if ((i & 1) == (idx & 1)) { gears[i] = rotRight(gears[i]); } else { gears[i] = rotLeft(gears[i]); } } } else if (dir == -1) { for (int i = low; i <= high; i++) { if ((i & 1) == (idx & 1)) { gears[i] = rotLeft(gears[i]); } else { gears[i] = rotRight(gears[i]); } } } } void printGear(int n) { for (int i = 7; i >= 0; i--) { cout << ((n & (1 << i)) ? 1 : 0); } cout << '\n'; } void printAll() { for (int i = 1; i <= T; i++) { printGear(gears[i]); } cout << '\n'; } int main() { freopen("input.txt", "r", stdin); scanf("%d", &T); for (int i = 1; i <= T; i++) { int gear = 0; for (int j = 0, temp; j < 8; j++) { gear = gear << 1; scanf("%1d", &temp); gear += temp; } gears[i] = gear; } // printAll(); scanf("%d", &K); for (int i = 0, a, b; i < K; i++) { scanf("%d %d", &a, &b); rotate(a, b); // printAll(); } for (int i = 1; i <= T; i++) { if (gears[i] & (1 << 7)) cnt++; } printf("%d", cnt); return 0; }
-
미해결홍정모의 따라하며 배우는 C++
[4:00]static 멤버 변수의 초기화에서 문득 궁금해진 점
class Some {public: static int _val;};int Some::_val = 1; 마지막 줄인 int Some::_val = 1; 에서 앞에 int가 붙는 이유는 무엇인가요?Some이라는 클래스 안의 _val이라는 int형 멤버 변수라는 것으로 충분히 의미가 전달될 수 있는데, 앞에 int를 붙여서 변수 선언 과정처럼 초기화해야 하는 이유가 뭘지 궁금합니다.