묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
해설과 코드를 봐도 이해를 못하겠어서 질문드립니다.
안녕하세요 큰돌님!강의 들으면서 알고리즘 잘 하고있습니다! 정말 많은 시간을 들여서 고민했지만 그럼에도 모르겠는 부분이 있어 질문드립니다. 우선 놀이공원을 타는 아이들을 태울 수 있는 시간을 한 묶음단위로정확한 시간보다 더많은 시간을 구하는것으로 이해했습니다. 그래서 check 함수에서 아래와 같이 정확한 시간을 체크하지 않는 건가요?정확한 시간을 구하면 마지막 학생이 어떤 놀이기구를 타는것을 구하는것이 어렵기 떄문일까요?bool check(ll mid){ cnt = 0; for(int i = 0; i < m; i++){ cnt += mid / play[i]; if(mid % play[i]) cnt++; } return cnt >= n; } 그래고 정확한 시간을 구하기 위해 ret - 1을 하며 시간을 이전 묶음단위로 재정의 하고나서temp++을 하는 조건문을 이해지 못하겠습니다.ret은 정확한 시간이 아닌 원래 구하는 시간보다 +되어있는 시간인데왜 거기에 놀기기구의 시간을 % 연산을 해서 temp를 ++할까요?시간되실때 답변 부탁드리겠습니다!항상 친절한 답변 정말 감사드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-h성곽 문제 dfs 언더플로 오버플로 체크
안녕하세요, 큰돌님. 강의를 듣다 궁금한 점이 생겨서 질문 드립니다. 평소대로라면 dfs에서 최대 최소 범위 오버 플로나 언더 플로를 체크하셨을 텐데, 이번 코드는 그게 없네요.혹시 그 이유가 지도가 무조건 성벽에 둘러싸여져 있어서 그런 것일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2주차 #7 맵과 방향벡터 개념에서 문제 3번 질문입니다.
안녕하세요 큰돌님. 2주차 #7 맵과 방향벡터 개념에서 문제 3번 질문있습니다.큰돌님 블로그에 나와있는 코드를 입력하고 실행시켜봤는데 제가 예상한 답과 조금 다른거 같습니다.1 0 11 0 10 1 1이렇게 입력했을때 방문한 좌표는 (0:0), (1:0), (0:2), (1:2), (2:1), (2:2) 이렇게 6개가 나와야 하는데 밑의 사진처럼 (0:0), (1:0) 밖에 안나옵니다.혹시나 입력이 틀린건가 싶어 (1),(2)과 같이 입력해 보았는데 같은 결과였습니다...(1)(2)배열에 입력한 값은 잘 들어갔는데... 뭐가 문젠지 모르겠습니다.도와주세요.. =========================================================아 해결되었습니다.main 문에서 2차원배열을 순회하며 if(visited[i][j] == 0 && a[i][j]) 조건을 충족하는 것만 DFS재귀함수 돌리면 되네요..ㅋㅋㅋ=> 결과
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
중복된 요소 제거 목적으로는
중복된 요소 제거 목적으로는 그냥 set을 활용하면 안되나요?굳이 unique와 erase를 활용하는 이유가 있을까요? 시간복잡도도 많이 차이날텐데 set을 활용하때와 비교해서요.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 경로가 여러개일경우 하나만 출력하면 되는건가요?
여러개 출력해야하는 줄 알았는데 아니었나보네요#define prev aaa #define next aaaa 는 무슨뜻일까요?
-
해결됨홍정모의 따라하며 배우는 C++
15.4 std::move 관련
14:05쯤 18, 19행 operator 오버로딩이 다르다고 직접 디버거로 찍어보라고 하셨는데, 디버거에서 어떻게 확인해야하는지 모르겠습니다. (std::move에 들어가서 볼 수 있을 줄 알았는데 제가 못 찾는건지 확인이 어려워서요...) 11:00쯤 v.push_back(str);과v.push_back(std::move(str)); 을 비교한 것처럼,오버로딩된 함수를 사용하는 것(하나는 l-value로 parameter를 받고 하나는 r-value로 parameter를 받는)을 말씀하시는 것 같은데17행의 parmeter로 들어온 b도 l-value,18행의 지역변수인 tmp도 l-value 아닌가요?아니면 b는 T&로 받아오고, tmp는 T로 받아서 오버로딩되었다는 뜻인가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-G 풀이 원리가
수빈이가 가는 모든곳을 계산할건데next가 먼저 자리잡는애가 최단시간 거리고next가 먼저 자리잡은애가 있는데 지금자리에서 1번만에 이동가능하면 else if 문이 실행되서 cnt가 늘어나는거고그중에서 동생이 있는곳의 값을 출력하는거군요??그리고 for (int next : {now-1, now+1, now*2}) 이 부분을 int i=0; i<n;i++ 이런식으로 구현하려면 어떻게 해야할까요? 그냥 몰라도 되려나요
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
다음 강의 고민입니다
이번 강의를 다 듣고 다음 강의 중 section3 부터 할지 section2 부터 할지 고민입니다.먼저 자료구조와 알고리즘을 통해 C++ 에 대해 더 공부하는게 괜찮을까요?
-
미해결홍정모의 따라하며 배우는 C++
15.3에서 생성자, 복사 대입 연산자 관련
(이미지가 잘 안 보여서 저장해서 보셔야할 것 같습니다)이동 생성자 설명 전 강의 초반에 복사 생성자를 사용하면 어떻게 되는지 보여주시는데 이해가 잘 안 돼서 디버거를 사용해보았습니다.제가 이해한대로 적어봤는데, 혹시 잘못 이해한 부분이 있다면 설명 부탁드립니다.그리고 이미지에도 적어두었듯이 맨 첫줄에서 왜 Resource default construct는 호출되지 않은 것인지 궁금합니다! 다른 질문자들에게 달아주신 답변들도 참고하며 공부하고 있습니다. 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 불이야 답 rep()부분 수정해주시면 안될까요?
사실 그냥 강의로 답 봐도 되긴합니다만 ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[완료]split 과 cin 에 대한 질문 입니다.
안녕하세요. 강사님.split 강의를 보다가split 함수에 들어가는 input 에 대응되는 인자를cin 메소드로 입력받게 했는데요.이상하게 첫 번째 token 만 받아와져서왜 해당 코드에선 정상 작동하지 않는지 궁금합니다.=============================================cin 이 공백 기준으로 구분 짓는다는 것을 잊었네요.std::getline 를 통해서 해결할 수 있는 것을 확인했습니다.=============================================#include <bits/stdc++.h> using namespace std; // split vector<string> split(string input, string delimiter) { vector<string> ret; long long pos; 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(void) { string abc, delimiter; cout << "input : "; // 입력을 받는 부분 cin >> abc; // abc = "a b c"; delimiter = " "; vector<string> result = split(abc, delimiter); for(auto it : result) cout << it << '\n'; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-m 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요~~ 강의 잘 보고 있습니다.강의 중 3:18 에 "for문 c를 이렇게 한 점 ~" 이러는 부분 코드for(c++; c < n; c++)시작점에 c++ 이 있는 for문은 처음 보는데 검색해도 안나와서 설명 부탁 드립니다.for 문 돌기 전 저장된 c 에서 ++ 된 값으로 시작한다는 의미인가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I bool cmp함수에 대해 질문입니다
안녕하세요 강사님!첫번째 질문입니다!15행에 있는 bool타입의 cmp함수에 대해서 궁금한것이 있습니다. 저는 비교할 a와 b를 atoi함수를 이용하여 정수형으로 바꾼 다음 true와 false값을 반환하고 싶었습니다.http://boj.kr/5ddd323af5c04a56b8275929460adbd4하지만, 실력이 미숙하여서 atoi함수를 이용한 정답을 찾지 못하고 있습니다.그래서, atoi함수를 이용한 bool타입의 cmp함수의 코드가 궁금합니다! 두번째 질문입니다.http://boj.kr/665da2ad9cd1493ca004c528b5a74454위 코드를 이용해서 문제의 예제입력3번을 입력하면 출력값으로 0 0 0 1 2 3 4 7이 나옵니다.이 중, 0이 나오는 위치를 찾아보니 01bond와 03bond뒤에 0이 각각 출력됩니다. 고민해봐도 0이 왜 출력되는지 모르겠어서 질문 드립니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 의 단순 질문입니다
큰돌님 께서는 quard함수 안에 bool flag=0을 선어 하셨는데 하신 이유가 궁금합니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문제 5번 질문드립니다.
풀이를 안보고 만들어 보았는데 이렇게 하니 문자의 위치를 교환하는 부분은 문제가 없는데 교환을 하는 중간 부분에서 원하는 값인 dlrow olleh 가나와도 멈추지를 않아 다시 hello world가 최종값으로 되어 출력이 됩니다.. 이런 경우에는 어떻게 해결해야 하나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-G 문제 풀이 질문있습니다
http://boj.kr/c3c5f90c10764291bfde2d6fe64406a2 자꾸 런타임에러(segfault)가 뜨네요 ㅜ원인이 무엇인지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 틀린 이유를 알고싶습니다ㅠㅠ
안녕하세요 큰돌님!2-R에서 선생님께서는 child라는 변수를 만들어 기저사례를 정하셨는데 저는 a[here].size() 즉 배열의 크기가 0이면 return 1을 하도록 기저사례를 정의했습니다.그렇게 했더니 틀렸습니다가 뜨더군요ㅠㅠㅠ 배열의 크기로 확인하면 안되는 걸까요..?#include <bits/stdc++.h> using namespace std; vector<int> a[54]; int n, tmp, del, root; int dfs(int here) { int ret = 0; //이 부분입니다! if(a[here].size() == 0) return 1; for(int there : a[here]) { if(there == del) continue; ret += dfs(there); } return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for(int i = 0; i < n; i++) { cin >> tmp; if(tmp == -1) root = i; else a[tmp].push_back(i); } cin >> del; if(del == root) { cout << 0 << "\n"; return 0; } cout << dfs(root) << "\n"; return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B똑같이 친거같은데 결과가 다르네요
using namespace 아래로 답지꺼 복붙 하니까 제대로 되는데 제가 답지 따라서 타이핑 친 건 이건데 안 나오네요 아무리 봐도 어디가 잘못된 줄 모르겠어요#include<iostream> #include<cstring> #include<queue> #include<tuple> using namespace std; int n, m, mx, visited[54][54]; const int dy[]={-1,0,1,0}; const int dx[]={0,1,0,-1}; char a[54][54]; void bfs(int y, int x){ memset(visited,0,sizeof(visited)); visited[y][x]=1; queue<pair<int,int>>q; q.push({y,x}); while(q.size()){ tie(y,x)=q.front();q.pop(); for(int i=0;i<4;i++){ int ny=y+dy[i]; int nx=x+dy[i]; if(ny<0||ny>=n||nx<0||nx>=m)continue; if(visited[ny][nx])continue; if(a[ny][nx]=='W')continue; visited[ny][nx]=visited[y][x]+1; q.push({ny,nx}); mx=max(mx, visited[ny][nx]); } } return; } int main(){ cin >> n >> m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a[i][j]=='L')bfs(i,j); } } cout << mx-1 << "\n"; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B char는 띄어쓰기 없어도 그냥 배열에 받을 수 있는건가요
int경우에만 띄어쓰기 주의하면 되나요
-
해결됨CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기
Warp 갯수에 대한 고찰입니다....
SM내 warp가 24개가 이상일 경우에 overlab이 생기지 않아 효율적인 스케줄링이 가능하다는 것은 정확히 이해 했지만, Warp 갯수가 적어지면 근본적으로 작업시간 자체는 줄지 않을까? 그렇다면 빨리 끝나는게 스케줄링이 좋은거 아닐까? 라는 생각이 들었습니다.다음은 제 생각을 담은 그림입니다.다음과 같이 23개의 warp가 overhead가 걸릴 수는 있겠지만 일이 끝나는 시간은 짧지 않을까?또 반대로 warp의 수가 작다는 것은 일 양이 많지 않다는 것이니 당연히 빨리 끝나는게 맞지 않을까?라는 생각을 했습니다.