묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
size() 대신 length() 사용해도 무방한가요
구글링을 해보니 return 값은 동일하다고 하는데 length()대신 size를 사용하는 특별한 이유가 혹시 있나해서 질문합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
12분 질문
레지스터의 크기에 따라서 예약된 이름이 다르다고 하셨는데 이상태의 경우인데 강의에서는 mov eax, 0x1234 mov rbx, 0x1234567 mov cl, 0xff 이렇게 해주셨는데 그러면 eax라는 이름에 0x1234가 왜 안들어가고 rax에 값이 들어가나요? rax는 64비트이고 eax는 32비트의 이름을 가진 레지스터인데.. 이해가 잘 가지 않습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
C++ 에서는 메인 함수 밖에서 쓰면 0과 공백으로 초기화되나요?
int t, n; string a, b; int main(){ int m; ... } 컴파일 후 실행해보니, 메인 함수 안에서는 쓰레기 값이 들어가고 메인 함수밖에서는 항상 0이나 공백으로 초기화되어있는 것 같아서요. 혹시 왜 그런건지 알 수 있나요? 감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
소멸자 호출 질문
제가 따라 하면서 좀 다르게 코드를 만들어서 돌려봤는데 소멸자가 왜 한번만 호출이 되는지가 이해가 안되서요 제가 생각에는 re의 소멸자랑 re2의 소멸자 그리고 re3에서 만들어진 복사생성자에서 호출하는 Resource(source.length); 여기서만든 생성자랑 re3에서 만들어진 거랑해서 총 4의 소멸자가 호출이 되어야 한다고 생각하는데 1개만 호출이 되서요 왜그런건가요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
compare_exchange_strong과 compare_exchange_weak
compare_exchange에 해당하는 두가지 함수가 있기에 궁금하여 해당 내용을 찾아보았지만 이해가 가지 않습니다.https://cplusplus.com/reference/atomic/atomic/compare_exchange_strong/ Unlike compare_exchange_weak, this strong version is required to always return true when expected indeed compares equal to the contained object, not allowing spurious failures. However, on certain machines, and for certain algorithms that check this in a loop, compare_exchange_weak may lead to significantly better performance. 1) spurious failures? weak는 해당 오류가 어떻게 나올 수 있다는 걸까요?2) weak와 strong을 선택하는 대표적인 기준은 무엇인가요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
14분부터 나온 atomic 헤더와 C++버전에 관한 질문입니다.
코드를 따라치면서 컴파일해보다가 14분 30즘에 나온 방식으로 atomic<int32> sum = 0;으로 치고 컴파일 했을 때 -std=c++11과 -std=c++14로는 에러가 났습니다. 1) atomic은 C++ 버전 몇에서 표준화되고 추가되었나요?2) 지금은 모든 Makefile의 CXXFLAGS에 -std=c++17를 추가해 통일시켜놨는데 앞으로 나오는 강의를 기준으로 C++17로 괜찮을까요? 아니면 해당강의에 맞는 추천버전이 있으신가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2468 안전 영역
안녕하세요 이제 막 알고리즘 시작한 코린이 입니다. 큰돌님 처음으로 질문 드려봅니다!! dfs 문제에서 어디서 오류가 났는지를 못찾겠어서 도움 요청드려요.. 그리고 꼭 여쭤보고 싶은게 ny랑 nx 또는 y와 x의 순서는 x y 가 아니라 왜 항상 y부터 먼저 사용하는 건가요? 그 부분이 조금 헷갈려서 여쭙고 싶어요 선생님. #include <bits/stdc++.h> using namespace std; const int max_n = 104; int n, ret, a[max_n][max_n], e[max_n][max_n], h = 1; bool visited[max_n][max_n]; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; void dfs(int y, int x) { visited[y][x] = 1; for (int i=0; i<4; ++i) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || ny >= n || nx < 0 || nx >= n) continue; if (e[ny][nx] == 0 && !visited[ny][nx]) dfs(ny, nx); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for (int i=0; i<n; ++i) { for (int j=0; j<n; ++j) { cin >> a[i][j]; } } while (h <= 100) { fill(&visited[0][0], &visited[0][0] + max_n * max_n, 0); int temp = 0; for (int i=0; i<n; ++i) { for (int j=0; j<n; ++j) { if (e[i][j] == 1) continue; if (a[i][j] <= h) e[i][j] = 1; } } for (int i=0; i<n; ++i) { for (int j=0; j<n; ++j) { if (e[i][j] == 0 && !visited[i][j]) { dfs(i, j); ++temp; } } } ret = max(ret, temp); ++h; } cout << ret << "\n"; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간 범위가 작아서 누적합으로도 풀 수 있네요.
변화량 누적합으로 풀었습니다. #include <bits/stdc++.h> using namespace std; int fee[4], a[101], ans = 0; int main() { for (int i = 1; i <= 3; ++i) { cin >> fee[i]; } for (int i = 0; i < 3; ++i) { int s, e; cin >> s >> e; ++a[s], --a[e]; } int car = 0; for (int i = 1; i <= 100; ++i) { car += a[i]; ans += car * fee[car]; } cout << ans; return 0; }
-
미해결
c++ 입문자인데 질문 드립니다 ㅠㅠ
출력한 구구단을 입력 받은 후에 그 입력 받은 단 보다 1,2단씩 큰 단을 출력하는 문제인데 제가 쓴 코드가 일단 저기까지 써서 일반적인 구구단 출력까진 하겠는데 1,2단씩 큰 단을 어떻게 출력하는질 모르겠어서 ... 도와주실 분 계실까요 int i,dan; printf("단을 입력하세요 :"); scanf("%d", &dan); for(i=1; i<=9; i++){ printf("%d * %d = %d\n" , dan, i, dan * i); // 일반적인 구구단 } return 0; }
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
이 방법은 시간복잡도가 On2 정도일까요?
int main() { freopen("input.txt", "rt", stdin); int n; scanf("%d", &n); std::vector<int> list; int sum = 0; int count = 0; for (int i = (n/2) + 1; i > 0; i--) { int temp = i; sum = 0; list.clear(); while (true) { sum += temp; list.push_back(temp); temp--; if (sum == n) { for (int k = list.size() - 1; k > 0; k--) { printf("%d + ", list[k]); } printf("%d = %d\n", list[0], sum); count++; break; } else if (sum > n) { break; } } } printf("%d", count); return 0; } 반복문이 3번 등장해서 좋지 못하다고 생각듭니다. 시간복잡도가 On2 이상 일까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
반복문 한번으로 끝낼 수 있을 땐 한번만 사용하는 것이 좋을까요?
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <vector> #include <algorithm> int main() { freopen("input.txt", "rt", stdin); int n; int nList[101] = { 0, }; scanf("%d", &n); for (auto i = 0; i < n; i++) { scanf("%d", &nList[i]); } int m; int mList[101] = { 0, }; scanf("%d", &m); for (auto i = 0; i < m; i++) { scanf("%d", &mList[i]); } int results[201] = { 0, }; int p1 = 0, p2 = 0, p3 = 0; while(nList[p1] != 0 || mList[p2] != 0) { if (nList[p1] > mList[p2] && (nList[p1] != 0 && mList[p2])) { results[p3] = mList[p2]; p2++; } else if (nList[p1] < mList[p2] && (nList[p1] != 0 && mList[p2])) { results[p3] = nList[p1]; p1++; } else { int temp = 0; if (nList[p1] != 0) { temp = nList[p1]; results[p3] = temp; p1++; } else { temp = mList[p2]; results[p3] = temp; p2++; } } p3++; } for (auto i = 0; results[i] != 0; i++) { printf("%d ", results[i]); } return 0; } 안녕하세요 강사님. 반복문을 한번으로 끝낼 수 있는 문제는 한번만 사용하는 것이 좋을까요? 대신 조건문이 좀 더 많아지는데 반복문을 줄이는게 다른 알고리즘에서도 더 효과적인지 궁금합니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
배열의 처음부터 접근해도 괜찮을까요?
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <vector> #include <algorithm> int main() { freopen("input.txt", "rt", stdin); int cacheSize, tasks; scanf("%d %d", &cacheSize, &tasks); std::vector<int> cacheList(cacheSize, 0); int i = 0; for (int task = 0; task < tasks; task++) { if (i != cacheSize-1) { i++; } int k; int input; int pos = 0; scanf("%d", &input); // Hit 위치를 찾아낸다. for (k = 0; k <= i; k++) { if (cacheList[k] == input) { pos = k; } } // Hit가 없으면 if (pos == 0) { for (k = i - 1; k >= 0; k--) { cacheList[k + 1] = cacheList[k]; } } else { for (k = pos - 1; k >= 0; k--) { cacheList[k + 1] = cacheList[k]; } } cacheList[k + 1] = input; } for (int i = 0; i < cacheSize; i++) { printf("%d ", cacheList[i]); } return 0; } 반복횟수를 줄여보고자 첫 인덱스부터 접근했보았습니다. 괜찮은 코드일까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
채점기 질문있습니다.
안녕하세요 강사님 채점기에 대한 질문있습니다. 현재 윈도우11 에서 과정을 진행중에 있습니다. 채점기가 실행은 되는데 전부 wrong_answer이 뜹니다. 혹시나 싶어 dev c++, visual studio 둘 다 빌드 해봤지만 상황은 같습니다. 폴더에 있는 정답 소스코드를 붙여 넣어도 전부 wrong_answer라고 떠서 윈도우 11에선 작동하지 않는건가 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코딩테스트 준비 기간 질문
안녕하세요! 우선 좋은 강의 감사드립니다. 질문드리고 싶은 것이 있습니다. 취준을 시작한지 얼마 안됐고, 어느정도의 시간동안 어느정도의 양을 투자해야할지 몰라서 앞으로 계획에 참고하기 위해 질문드립니다. 카카오 공개채용을 합격을 목표로 하고 있습니다. 사람마다, 기간마다 다르겠지만 어느정도의 기간 동안 하루 평균 몇 시간 정도 투자하면 카카오 코딩테스트를 통과할 수준에 도달한다고 생각하시나요? (ex : n개월, 하루 평균 m시간) 강사님께서는 많은 학생을 가르치셔서 평균적으로 어느정도 수치를 투자하면 된다는 데이터가 쌓였을 것 같아 질문드립니다! 좋은 강의 감사합니다 😄
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
강의 수강 전에 풀어보는 것에 대해서
58번에서 배운 전위순회 개념만을 이용해서 59번 풀려고하니 이틀동안 고민하다 답이 안보여서 강의를 봤는데 트리의 레벨이라는 개념이 나오더라구요. 그래서 채점폴더가 없는 문제들은 새로운 개념을 익히는 용도로만 봐야하나 생각했습니다. 58번과 59번처럼 채점폴더가 없는 문제들은 문제를 푸는 과정을 거치지않고 그냥 편하게 쭉 들어봐도 되는걸까요? 지식이 없는 상태에서 푸는게 너무 어렵네요.
-
미해결홍정모의 따라하며 배우는 C++
extern 선언
header 파일과 cpp파일을 따로 만들어 상수를 선언하는 부분에서, header 파일에 extern 선언을 하는 것은 이해가 되지만, cpp파일에서까지 extern을 붙여줘야하는 이유를 모르겠습니다. extern 은 외부 파일 어딘가에 해당 변수(상수)가 있다 라는 의미를 내포하고 있는것으로 아는데, cpp파일에서도 선언을 해 줘야하는지 궁금합니다. +실제로 cpp파일의 상수 선언에서 extern을 빼니, 에러가 발생하는것을 확인했습니다. 제가 extern 키워드를 잘못 이해하고 있는건가요?
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
시간 복잡도 관련으로 질문 드립니다
안녕하세요 강사님, 강의 잘 듣고 있습니다! 다름이 아니라 제가 짠 코드로도 100점이 나오긴 하는데, 강사님이 설명해주신 코드와는 방식이 조금 달라 해당 코드의 시간 복잡도에 대해 여쭤보고자 질문 드립니다. #include <iostream> using namespace std; int main() { int count = 0; int max = 0; int input; cin >> input; for (int i = 1; i <= input; i++) { count = 0; max = i; for (int j = 1; j <= max; j++) { if (i % j == 0) { if ((i / j) != j) count++; max = (i / j) - 1; count++; } } cout << count << ' '; } cout << endl; } 시간 복잡도 O(n^2)의 코드와 유사한데, for문을 한 번 계산할 때마다 max 값을 줄여 약수의 절반을 찾아내면 다음 for문으로 넘어가는 방식의 코드예요. 실제로 for문이 도는 건 원래의 값보다 훨씬 적긴 한데 O(logn * n)보다는 오래 걸리는 것처럼 보여서... 이 코드의 시간 복잡도도 O(n^2)이 맞나요?
-
미해결따라하며 배우는 NestJS
socket관련 질문!
안녕하세요! 먼저 강의 잘 들었습니다 강의보고 따라해보니 CRUD 프로그램 개발에는 조금이나마 이해가 됩니다 그런데 socket을 이용하여 tcp 통신을 해야하는 프로젝트를 진행중인데 nest.js 공식 문서를 보니 @SubscribeMessage('event_name') 을 이용하여 데이터를 받고 emit을 이용하여 event_name으로 주는 환경이더라고요?? 현재 서버를 nest.js 기반으로 개발하고 개발해 놓은 클라이언트(c++작성)에서 tcp 통신을 하기 위해서는 c++ 클라이언트에서도 socket.io를 활용하여 event_name 을 통하여 통신을 해야하는 것인가요? 아니면 event_name 없이 단순 tcp 통신을 통해 binary 데이터를 주고 받을 수 있는 서버 nest.js 환경이 있을까요?? 제가 socket.io에 대해 이해한 내용이 맞는건지도 잘 모르겠지만 답변 부탁드리겠습니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
sasm 오류
첫 sasm강의에서 setting을 확인하라고 하면서 hello world가 출력이 안되는데 왜 그런건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-C 6236번 질문있습니다
6236 용돈관리 문제 질문드립니다. 제공해주신 문제해설 코드가 틀렸다고 나와서 질문드립니다. 시작 hi값을 써야되는 금액을 모두 더한 값으로 설정하고 이분탐색을 했더니 통과가 되었습니다. 문제에서 K의 최대값에 대한 설명이 없어서 맞게 생각해서 통과한건지 어쩌다 얻어걸린건지 궁금해서 질문드립니다!