묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님 질문 있습니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/50bc7487d15a4569a1ed8e12e3f46c6f메인에서 combi를 호출할 때에 combi(-1,b)로 보내는데 위의 링크 combi(0,b)로 보내고 combi 함수의 내부의 for문과 같이 바꿔도 괜찮을까요??개인적으로 함수를 호출할 때에 증가되는것이 보기에 더 잘 이해되서 한 번 여쭤봅니다!!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
선생님 배열을 잘 모르겠습니다...
선생님 여기 와일문에서 tmp변수를 소인수분해 하는 과정까진 이해를 했습니다.. 근데 분해 될 때마다 ch [j]++을 하라고했는데 이건 j배열의 인덱스값을 늘려서 3 1 1 이런식으로 j배열이 저장되는거 아닌가용? 프린트문에서는 ch[i]로해서요! 물론 컴파일해보면 선생님이 설명해주신게 맞습니다! 다만 제가 이해가 잘 안되어서요 ㅠㅠㅠ
-
미해결홍정모의 따라하며 배우는 C++
한글입력을 받을 수 없어요.
검색으로도 해결하지 못해 질문합니다 ㅠㅠㅠ다른컴퓨터로는 문제없이 되는데 주로 사용하는 컴퓨터는 이래서 너무 답답해요.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-a문제 two pointer - list 질문입니다.
http://boj.kr/eaeaa929cfea47cea478e58406b544d1안녕하세요. 예전에 알고리즘을 살짝 공부해서 투 포인터를 써서 array로 풀어보고 list로도 풀어 볼라 하는데 막혀서 질문드립니다.위 코드를 보면 9개의 입력을 받는 cin반복문이 작동하지 않습니다. line 15까지만 있으면 잘 작동하는데 아래 코드들이 추가되면 안되더라구요. iterator를 잘못사용한거 같아 3시간 동안 구글링하며 씨름 해봤는데 그래도 모르겠습니다...참고로 http://boj.kr/ed564ade48bf42768fe37164e175621b 는 array로 짠 코드입니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-K 1513 해설 코드가 이해가 잘되서 질문드립니다.
일단 저는 이직준비를 하기 위해 이 강의를 수강하고 있어서 제공되는 문제와 강의를 kotlin언어로 풀고있습니다. 제가 틀린문제라 아래 코드는 선생님의 C++ 해설코드를 그대로 kotlin 코드로 옮겨 놓은것인데요. go 함수의 종료 조건에 저 부분을 추가 하면 정답이 됩니다. 하지만, 선생님의 C++ 코드는 저런 종료 조건이 없음에도 잘 정답처리가 됩니다. 이게 로직의 차이인지.. 아니면 제가 모르는 C++ 언어의 특성으로 발생하는 일인지 잘 모르겠습니다.왜 선생님의 코드에는 cnt가 음수가 되면 종료하는 종료 조건이 없이도 정답이 됩니까? // 방문해야할 오락실 개수가 음수라면 if (cnt < 0) return 0fun go(y: Int, x: Int, cnt: Int, prevC: Int): Int { // 맵의 범위를 벗어난 경우 if (y !in 1..n || x !in 1..m) return 0 // 방문해야할 오락실 개수가 음수라면 if (cnt < 0) return 0 // 도착지에 도착한 경우 if (y == n && x == m) { if (map[y][x] == 0) { if (cnt == 0) return 1 } else { if (cnt == 1 && map[y][x] > prevC) return 1 } return 0 } // println("y $y, x $x, cnt $cnt prevC $prevC") if (case[y][x][cnt][prevC] != -1) return case[y][x][cnt][prevC] var pathCnt = 0 if (map[y][x] == 0) { pathCnt = (go(y + 1, x, cnt, prevC) + go(y, x + 1, cnt, prevC)) % 1000007 } else if (map[y][x] > prevC) { pathCnt = (go(y + 1, x, cnt - 1, map[y][x]) + go(y, x + 1, cnt - 1, map[y][x])) % 1000007 } case[y][x][cnt][prevC] = pathCnt return pathCnt }
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요 루키스님 part1, part3
안녕하세요 루키스님비전공자이지만 루키스님의 강의 덕분에 많이 배우고 있습니다 질문이 있어서 올려요!저는 클라이언트 개발에도, 서버 개발에도 모두 관심이 있는데당장 취업이 급해서..!클라이언트 개발로 우선 취업하려는 생각입니다.part1 (c++) 과 part3 (자료구조알고리즘) 강의 를 듣고코딩테스트와 포트폴리오를 별도로 준비하면 충분할까요??윈도우api 와 다이렉트x는 아예 접해보지 않아서 시간이 정말 오래 걸릴 것 같아서요...!아니면 얼마 전에 올려주신 게임 프로그래머 입문 올인원이라도 들어야할까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 영상
영상 앞부분이 짤린건가요?? 갑자기 설명부터 시작해서 전 영상에서 짤린 줄 알았습니다.
-
해결됨CUDA 프로그래밍 (5) - C/C++/GPU 병렬 컴퓨팅 - 아토믹 연산 atomic op
선생님 gpu->cpu 속도 개선에 대해서 질문드려요
선생님 안녕하세요. 저번에 opencl과 cuda를 같이 공부 중이던 학생이에요.제가 프로그램을 작성하는 도중에 VRAM <-> RAM의 전송 속도가 느리다는 것을 깨달았는데요.제가 보통 결과 값으로 40mb 정도를 가지는데(위의 자료에 따르면 6ms 정도) 이를 최대한 cpu에서 빨리 받기 위한 방법은 아직까지 존재하지 않는 것인지 알고 싶습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-k
http://boj.kr/fe656adfc64b4439972395d07af40ff6결국 못풀어서 선생님꺼보고 생각하면서 작성하며이것저것 바꿔보고있는데요 insert부분에서 begin은 어차피 0이니 지우고 사이즈만 반으로 나눠도 될것같은데 오류가 나더라구요위치를 반환하는거니 시작위치 + 사이즈만큼의 위치를 반환하는거로 생각되는데 맞게 이해하고있는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 자료구조stl은 struct도 지원되나요?
int, pair<?,?> 이런것 만 지원되나요?struct의 stack이나 queue는 직접 구현 해야 되나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-T 5557 1학년
#include <iostream>#include<vector>#include<algorithm>#include<string>#include<queue>#include<numeric>#include<map>#include<cstring>using namespace std;typedef long long ll;int N;ll arr[104][10004];int num[104];int Size;ll go(int idx, int cur) { if (cur > 20 || cur < 0) { return 0; } // 기저사례 if (idx == N - 1) { if (cur == num[idx]) { return 1; } return 0; } ll& ret = arr[idx][cur]; if (ret != 0) { return ret; } ret += go(idx + 1, num[idx] + cur); ret += go(idx + 1, cur - num[idx]); return ret;}int main() { cin >> N; for (int i = 0; i < N; i++) { cin >> num[i]; } cout << go(0, 0); return 0;} 해당하는 코드에 대한 반례나 틀린점이 있을까요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2주차 교안 내용 오류 발견 및 질문
Question 12주차 이론 블로그 내용에서 내부 노드의 정의가 '루트 노드와 내부 노드 사이에 있는 노드를 뜻합니다.' 로 되어 있는데 여기서 내부노드가 아닌 리프노드가 맞지 않나요? Question 22주차 문제 중 10709 기상 캐스터 문제 코드에서 다음 부분 질문입니다. for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(a[i][j] == 0){ int cnt = 1; while(a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++; } } } } 위 코드에서 while 문 내부에서 조건이 계속 만족되면 증가하는데, 인덱스 에러가 발생하지 않는 이유가 궁금합니다. for (int j = 0; j < m; j++) 위 for loop 문의 j < m 까지라는 게 내부 while 문까지 적용되는 건가요?Question3 2주차 문제 4659에서 isVowel을 아래와 같은 방식으로 작성하셨는데요.bool isVowel(int idx){ return (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u'); } ... ... if (isVowel(idx))... 이를 아래와 같이 문자열로 만들어서 이 내부를 탐색하는 건 어떻게 생각하시나요? 저 위에 isVowel도 결국은 각각 일치하는지 탐색하는 거이지 않나요?string f = "aeiou"; int main() { for (char w : word) { if (f.find(w) == string::npos) ... } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[알고리즘 교안] pop_back 컴파일 오류
컴파일러 설정도 제대로 했고, 코드도 그대로 쳤는데 컴파일 오류가 났습니다.답변해주시면 감사하겠습니다~
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 보물섬 int형 풀이
안녕하세요 선생님 항상 좋은 강의를 제공해주셔서 감사합니다.int형으로 풀어봤는데 코드리뷰 한 번 부탁드립니다. http://boj.kr/2a00c7aee3a64a95b52d0d889ee1c1f0
-
미해결홍정모의 따라하며 배우는 C++
Internal Linkage 질문
25:10 초 쯤부터Internal Linkage 에 대한 설명을 하십니다.int g_a = 1;이 Internal Linkage 로 개별 cpp파일 안에서만 전역변수처럼 작용한다고 하셨습니다. 그런데 그 후에 26분 쯤에서는static int g_a = 1; 에서 static이 이 변수가 다른 cpp파일에서 쓰이지 못하게 제한해준다고 하셨는데,이미 제한해줄 게 없이 이거는 이미 Internal Linkage 변수가 아닌가요..?static 이 없으면 파일 안에서만 전역변수가 되는 것이 아니라, 전체 파일에서의 전역변수가 되는 것이고 static이 있어야만 파일 내의 전역변수가 되는 건가요?이 부분을 여러번 돌려봤지만 너무 헷갈려서 질문 드립니다.
-
미해결홍정모의 따라하며 배우는 C++
4.2 헤더파일에서 extern을 초기화시킬 때
45분 31초쯤에 선생님께서,새로운 cpp 파일 Myconstants.cpp를 만드시고 그 안에extern const double pi(3.141592);extern const double gravity (9.8);이렇게 external linkage 전역 변수들을 초기화시키고,header file 안에는extern const double pi;extern const double gravity;이런식으로 선언만 해주셨습니다.이렇게 했더니, 헤더파일 안에 있는 pi를 가져가서 사용하는 서로 다른 cpp 파일에서의 pi의 메모리 주소가 같아졌습니다...여기서 헷갈리는 부분이 있습니다...물론 external 변수들은 꼭 초기화를 1번만 해주어야 한다는 사실은 이해하고 있습니다.그런데 왜 굳이 헤더파일에서 초기화를 시켜주지 않고 다른 cpp 파일에서 초기화를 시켜준 것인가요?제가 실험 삼아 선생님께서 하신 것과 그 반대로,다른 cpp 파일에서는 선언을 하고 헤더 파일에서는 초기화를 해주었습니다. 그랬더니 빌드할 때 error가 발생합니다...제가 한 방법과 선생님께서 하신 방법에 어떤 큰 차이가 있길래 한곳에서는 error 없이 잘 실행되고 나머지에서는 error가 발생하는 걸까요?ㅠㅠ
-
미해결홍정모의 따라하며 배우는 C++
4.2 extern의 존재 유무
선생님께서 45분 쯤에 말씀하셨던 코드들을 좀 더 이해해보고 싶어서 이렇게 해보았습니다.<Header File constant.h>#pragma oncenamespace Constants {extern const double pi(3.141592);extern const double gravity(9.8); } <test.cpp>#include <iostream>#include "constant.h"void doSomething() {using namespace std;cout << "In test.cpp " << Constants::pi << endl;} <main.cpp>#include<iostream>#include "constant.h"using namespace std;void doSomething();int main() {cout << "In main.cpp file " << Constants::pi << endl;doSomething();return 0; } 여기서 궁금한 점이 헤더파일 안에 있는 const 변수들 앞에 extern이 없으면 아무런 문제가 없지만,extern을 붙이면 문제가 발생합니다..왜 extern을 붙이기만 하면 오류가 발생하는 것일까요...?extern linkage도 결국에는 전역 변수 중 하나인데 말입니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F 해설이해
안녕하세요 선생님 강의를 보고 살짝 헷갈리는 부분이 있어 질문드립니다.Q1. 사진은 선생님이 설명해주실때 그려주신건데, 왼쪽 num[1] oper[1] num[2] 이 부분이 괄호를 쳐서 연산해주었다고 생각해도 되는건가요?즉 제가 이문제를 접근할때 완전탐색으로 재귀호출시에 1. 괄호를 묶거나 2. 괄호를 묶지 않거나 이렇게 두가지로 생각을 해서 호출을 하려 했습니다.사진의 오른쪽은 그냥 현재 인덱스와 그 다음 인덱스를 연산하는것이기 때문에 왼쪽부터 오른쪽으로 연산하는것 이기에 괄호연산을 하지 않았다고 판단했고, 왼쪽은 오른쪽에서 부터 왼쪽으로 연산을 했기 때문에 괄호 연산을 한것이라고 판단하였습니다.근데 이번 인덱스를 먼저 계산하는 것이기 때문에 그 반대가 맞는것 같기도 하네요..Q2. 그리고 또 질문은 만약 괄호를 추가하냐 추가하지 않느냐 이렇게 두가지로 가정한다면 재귀호출후 원복하는 부분이 필요할것 같은데 그 부분이 왜 따로 없는지도 궁금합니다.-> 이 부분 제가 생각해 보았는데, visited 등과 같은 전역변수 배열은 한번 체크하면 재귀 탈출후에도 체크가 남아있어서 따로 지우는 로직이 필요한 것이고, 이번 문제의 경우는 재귀함수에서 하나의 함수를 탈출하면 재귀의 특성때문에 자동적으로 선택하기 이전으로 돌아가기 때문에 따로 뭔가를 지우는 로직이 필요없는것인가요? 혹시 제가 생각한것이 맞는 생각인건가요? 아니면 아예 접근을 그런식으로 하면 안되는건가요?
-
미해결홍정모의 따라하며 배우는 C++
4.2 전역 변수의 값을 바꿨을 경우
int a = 1;void doSomething() {++a;cout << a << endl;}int main() {int a = 10;doSomething();doSomething();doSomething();doSomething();}선생님께서 19분 38초 쯤에 이 코드에 관해서,<이런 식으로 int a = 10을 추가해 무의식적으로 a가 doSomething() 안에서 10이 출력되길 바랄 수 있는데 전역 변수는 어디서나 값을 막 바꿔버릴 수 있다.그럼 바뀐 값이 doSomething()에서 출력되는 것>이라고 설명하셨습니다.그런데,선생님께서 설명하신대로라면, 바뀐 값이니 10, 11, 12, 13이 나와야 하는데,저 코드를 출력하면 2, 3, 4, 5가 출력됩니다...혹시 선생님께서 잘못 설명하신 걸까요?ㅠ그래서 전역 변수는 어디서나 값을 막 바꿔버릴 수 있다는 설명도 헷갈립니다ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[알고리즘교안]pop_back, auto 관련 질문
안녕하세요. 알고리즘 교안에서 string 부분 중 코드 컴파일이 안되서 질문드립니다.코드는 다음과 같습니다.#include <bits/stdc++.h> using namespace std; int main(){ string a = "love is"; a += " pain!"; a.pop_back(); cout << a << " : " << a.size() << "\n"; cout << char(* a.begin()) << '\n'; cout << char(* (a.end() - 1)) << '\n'; // string& insert (size_t pos, const string& str); a.insert(0, "test "); cout << a << " : " << a.size() << "\n"; // string& erase (size_t pos = 0, size_t len = npos); a.erase(0, 5); cout << a << " : " << a.size() << "\n"; // size_t find (const string& str, size_t pos = 0); auto it = a.find("love"); if (it != string::npos){ cout << "포함되어 있다." << '\n'; } cout << it << '\n'; cout << string::npos << '\n'; // string substr (size_t pos = 0, size_t len = npos) const; cout << a.substr(5, 2) << '\n'; return 0; }위 코드 실행시 std::string has no member named 'pop_back' 와 'it' does not name a type 오류 메세지를 받습니다.검색해보니까 C++11이상 버전이 아니라서 그렇다는데 교안 첫 부분에 알려주신대로 C++14버전으로 컴파일 할 수 있게 설정을 한 상태입니다. 어떤게 문제인지 알려주시면 감사하겠습니다.