묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 문제로 연습하는 시간복잡도 Q3 질문 있습니다!
안녕하세요go함수가 2n-1 번 호출된다는 것은 이해했습니다.그런데 main함수에 보면 for문이 하나 더 있는데, 그럼 이 for문 내에서 n번 도는 거니 n + (2n-1) = 3n-1 이 되어야 하는 것 아닌가요?? 사실 빅오표기법에 의하면 둘다 O(n) 이어서 크게 중요하진 않을 수 있으나 혹여나 제가 잘못 이해한 부분이 있다면 바로잡고 싶어 질문드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p.46 질문
#include <bits/stdc++.h> using namespace std; int n; int main() { cin >> n; int a[n]; memset(a, 0, sizeof(a)); for(int i : a){ cout << i << " "; } return 0; }여기서 선생님이 에러가 난다고 했는데, 제 컴퓨터 vscode에서는 왜 에러 안뜨고 실행이 잘 되는 이유를 알고싶습니다. 제가 리눅스 터미널에서도 실행시켜 봤는데 에러가 발생하지 않는데, 원인을 잘 모르겠습니다.
-
미해결홍정모의 게임 만들기 연습 문제 패키지
정답은 어디서볼수있나요?
강의 마지막에 직접 진행보라는 내용에 대한 답은 없는건가요?굉장히 당황스럽네요;;
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-M 반례 질문입니다!
안녕하세요, 큰돌님!16235 문제를 풀던 중 아래 코드가 왜 안되는지 궁금합니다.맵에 각각 벡터를 넣지 않고 총 살아있는 나무를 넣는 우선순위 큐를 사용해서 구현 해보았습니다.우선순위 큐는 나이를 기준으로 오름차순 합니다. https://www.acmicpc.net/source/72058303 반례는 이것인데, 제 논리 대로라면 된다고 생각하는데 여기서 잘못된 답을 뱉어내네요... 5 2 7 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 1 3 3 2 3 답 : 71
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 질문
큰돌님 안녕하세요! 궁금한 게 있어서 질문 드려요~해당 문제 dfs로 풀어봤는데 이렇게 풀어도 괜찮을까요?좋은 수업 잘 보고 있습니다 감사합니다.http://boj.kr/98095677a0504f42a0d20b8758029ce2
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요 89: 토마토 문제 관련 질문있습니다!
강의 항상 잘듣고있습니다!89 토마토 문제 관련 제가 짠 코드에서 결과값은 문제 없이 나오지만 컴파일러가 아래와 같은 New_allocator 창을 띄우면서 pause 되는 문제가 있는데 코드를 아무리 봐도 에러가 왜 발생하는지 모르겠어서 질문 올립니다 . #include<iostream> #include<vector> #include<algorithm> #include<cmath> #include<queue> using namespace std; //넘겨야할 인자가 x,y,day 세개라서 class 필요 class Tmt{ public: int x; int y; int day; Tmt(int a, int b , int c){ x = a; y = b; day = c; } }; int main(){ freopen("input.txt","rt",stdin); int m,n; cin >> m >> n; // m = j = 가로 // n = i = 세로 vector<vector<int>>map(m+2,vector<int>(n+2,1)); //얘는 어차피 익으면 1로바뀌니까 ch가 따로 필요없을 것 같음. //vector<vector<int>>ch(n+2,vector<int>(m+2,0)); queue<Tmt>q; //상하좌우 탐색용 방향벡터 int dx[] = {1,0,-1,0}; int dy[] = {0,1,0,-1}; // input 읽어오는 동시에 초기 셋팅값 확인하기 int flag = 0; // flag 1 = 값이 1인 좌표 존재 for(int i = 1; i<=n ; i++){ for(int j = 1 ; j <=m;j++ ){ int temp; cin >> temp; map[i][j] = temp; if(map[i][j]==1){ flag = 1; // x,y 좌표 및 초기 0 day 삽입 및 ch 체크 q.push(Tmt(j,i,0)); } //cout << map[i][j]; } //cout << "\n"; } if(flag == 0){ //익은게 하나도없어서 결국 아무것도 안변함 -1반환 cout<<-1; return 0; } if(q.size() == n *m){ //시작때부터 다 익어있음 cout<<0; return 0; } int res = 0; //초기 setting된 q 활용해서 day 진행 while(!q.empty()){ Tmt temp = q.front(); int t_x = temp.x ; int t_y = temp.y; int t_day = temp.day; res = t_day; cout << " t_x: " << t_x << " t_y: "<<t_y<<" t_day: "<<t_day << "\n"; q.pop(); for(int i = 0; i<4;i++){ //cout <<" t_x+dx[i]: " <<t_x+dx[i] << " t_y+dy[i]: "<<t_y+dy[i] << " m: " << m << " n: "<<n << "map[t_x+dx[i]][t_y+dy[i]]: "<<map[t_x+dx[i]][t_y+dy[i]]<<"\n"; if((0<t_x+dx[i]<=m) && (0<t_y+dy[i]<=n) &&(map[t_y+dy[i]][t_x+dx[i]] == 0)){ //cout <<" t_x+dx[i]: " <<t_x+dx[i] << " t_y+dy[i]: "<<t_y+dy[i] << " m: " << m << " n: "<<n<<"\n"; map[t_y+dy[i]][t_x+dx[i]] = 1; q.push(Tmt(t_x+dx[i],t_y+dy[i],t_day+1)); } } } cout << res; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
값은 정상적으로 나오는데 어디가틀린지모르겠습니다.
안녕하세요 큰돌님. 언제나 늘감사하게 수업듣고있습니다.vscode에서는 이코드로돌리면 정상적으로 나오는데 어디가틀린지 모르겠네요 한번만 봐주실수있을까요? 감사합니다.#include<bits/stdc++.h> using namespace std; string a[104][104]; int h,w,cnt,ret[104][104]; string s; bool flag; int main() { cin >> h >> w; for(int i=0; i<h; i++){ for(int j=0; j<w; j++){ cin >> s; a[i][j] = s; } } for(int i=0; i<h; i++){ flag = 0; for(int j=0; j<w; j++){ if(a[i][j] == "c"){ cnt = 0; flag = 1; ret[i][j] = cnt; } if(flag && a[i][j] == "."){ cnt++; ret[i][j] = cnt; } else if(!flag) { flag = 0; ret[i][j] = -1; } } }; for(int i=0; i<h; i++){ for(int j=0; j<w; j++){ cout << ret[i][j] << " "; } cout << "\n"; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 런타임 에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 큰돌님! 2-I를 푸는 과정에서 코드를 수정해도 똑같은 오류가 나서 질문 남깁니다..코드를 작성할 때마다 런타임에러가 나는데 이유를 모르겠습니다.http://boj.kr/a34c68854cf14b81923e976a22e91188
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 주몽 문제 질문입니다
안녕하세요 큰돌님. 현재 강의를 듣고 있는 수강생입니다. 현재 1-L문제를 Vector형식에서 이중 for문을 이용해서 푸는데 고유한 값을 만들 수 있는 두개의 값이 있을 경우 이후 두개의 값을 0으로 처리하여 첫 번째 for문에서 0이 있을 경우 두 번째 for문으로 들어가지 않게 처리를 했는데요. 그 처리를 하니 백준에서 틀렸다고 나옵니다. 하지 않았을 경우에는 맞다고 표시가 되고요. 그래서 이유가 뭔지 궁금합니다. http://boj.kr/561f58234a27422bb2b2e02606e349fa
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-N 비효율적으로 풀었는데 이렇게 접근해도 되나요?
안녕하세요 큰돌님,다름이 아니고 3-N 완전이진 트리문제 이거 정석적인 방법이 잘 안떠올라서 무식하게 풀었는데 이렇게 풀어도 괜찮은가요?항상 문제 먼저 풀어보고 안풀리면 큰돌님 영상보는 식으로 학습중이거든요.... 이번에는 영상 보기전에 풀어서 통과가 되었지만 이런 방식으로 문제에 접근해도 괜찮은 건지 여쭙니다. #include <bits/stdc++.h> using namespace std; int K, ksize, input; vector<vector<int>> result; vector<int> v; int main() { cin >> K; ksize = pow(2, K) - 1; for (int i = 0; i < ksize; ++i) { cin >> input; v.push_back(input); } while (v.size()) { vector<int> temp; for (int i = 0; i < v.size(); i += 2) { temp.push_back(v[i]); } result.push_back(temp); for (int i = v.size() - 1; i >= 0; i--) { if (i % 2 == 0) { v.erase(v.begin() + i); } } } for (auto i = result.rbegin(); i != result.rend(); ++i) { for (const auto &n : *i) { cout << n << ' '; } cout << '\n'; } return 0; }
-
미해결Do it! 알고리즘 코딩테스트 with C++
백준 11404 플로이드 문제 질문있습니다.
입력을 받을 때 for (int i = 0; i < m; ++i) { int a, b, c; cin >> a >> b >> c; for (int i = 0; i < m; ++i) { int a, b, c; cin >> a >> b >> c; if (adj[a][b] > c) adj[a][b] = c;위처럼 입력을 받았는데요여기서 adj[a][b] = c;이게 빠지면 틀렸다라고 나오는데 왜 틀린것인지 이해가 안가는데 설명 부탁드립니다..
-
미해결Do it! 알고리즘 코딩테스트 with C++
문제 85번 질문드립니다
#include<iostream>using namespace std;int T[16];int P[16];int D[16];int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); //freopen("input.txt", "r", stdin); int N; cin >> N; for (int i = 0; i < N; i++) { cin >> T[i] >> P[i]; } for (int i = N - 1; i >= 0; i--) { if (i + T[i] > N) D[i] = 0; else { D[i] = max(D[i + 1], P[i] + D[i + T[i]]); } } cout << D[0];}여기서 초기화할 때 왜 0으로 하면 14프로까지 갔다가 틀렸습니다가 나오는지 잘 모르겠습니다 'i + T[i] > N' 다음 조건이 성립하면 항상 점화식의 값이 0이 나오는 것이 아닌가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선생님 2주차 개념 #9의 예제 문제 질문있습니다.
해당 코드는 제가 직접 구현한 문제 해답 코드인데요. 5 51 0 1 0 11 1 0 0 10 0 0 1 10 0 0 1 10 1 0 0 0의 테스트 케이스를 통과하도록 짜봤습니다.n * m 의 인접행렬을 만들고 1을 발견할 시 그 위치에서부터 ↑→↓←의 순으로 탐색을 하며 네 방향의 탐색을 마쳤을 때 결과가 모두 1이 아니라면 결과값을 1씩 증가시켜 답을 출력하는 코드입니다.첫번째 질문으로는 제가 구현한 코드가 너무 비효율적인 것 같습니다. 어떻게하면 이 코드에서 더 좋은 코드로 발전시킬 수 있을까요?두번째 질문으로는 제가 구현한 방식을 dfs라고 할 수 있는걸까요? 그냥 감으로 작성한 코드라서 이게 될줄 몰랐습니다..코드는 다음과 같습니다.단순히 구현만 하는것으로는 정답이겠지만 만약 이런 문제가 나온다면 시간초과나 메모리 초과가 날 게 분명해 보입니다../* 연결된 육지는 모두 오염 바다로는 갈 수 없다. 오염시킬수 있는 방향은 상 하 좌 우 네방향 최소 몇번을 이동해야 모든 육지를 오염시킬 수 있는가? 1 : 육지 0 : 바다 범위 1 <= N <= 100 1 <= M <= 100 예제 입력 입력은 맵의 세로길이 N과 가로길이 M이 주어진다. N * M의 맵이 주어진다. 5 5 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 출력 4 */ #include <bits/stdc++.h> using namespace std; const int dy[] = {-1, 0, 1, 0}; const int dx[] = {0, 1, 0, -1}; int n, m, findCount = 0; void dfs(int y, int x, int **ajm){ ajm[y][x] = 0; int check = 0; 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) { check++; if(check == 4){ findCount++; return; } continue;} if(ajm[ny][nx] != 1) { check++; if(check == 4){ findCount++; return; } continue; } if(ajm[ny][nx] == 1){ dfs(ny,nx,ajm); return; } } } int main(){ int num; cin >> n >> m; int **ajm = new int*[n]; for(int i = 0; i < n; i++){ ajm[i] = new int[m]; } for(int i = 0; i < n; i++){ for(int j= 0; j < m; j++){ cin >> ajm[i][j]; } } for(int i = 0; i < n; i++){ for(int j= 0; j < m; j++){ if(ajm[i][j] == 1){ dfs(i, j, ajm); } } } cout << findCount; return 0; }
-
해결됨홍정모의 따라하며 배우는 C++
L value, R value
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요, 제가 초반 강의들 중에서 스킵한 강의들이 좀 있는데, r value, l value에 관한 내용이 있는 강의가 어디쯤에 있을까요??
-
미해결C++20 훑어보기
카운팅 세마포어, 바이너리 세마포어
안녕하세요. 세마포어를 이전에 사용할 때는 createsemaphore라는 함수로 세마포어를 만들어서 사용했는데, 편하게 사용할 수 있게 c++20에서 추가된 건가요?
-
해결됨C개발자를 위한 최소한의 C++
예외 클래스에서 catch 안의 데이터형이 참조자인 이유
안녕하세요. 강의 잘 보고 있습니다.강의를 듣다가 궁금한 것이 생겨서 질문 드립니다. catch(MyException &exp) { // 생략 }이 강의 예제에서 catch의 예외 데이터형에 클래스 참조자를 받도록 하였는데 만약 아래처럼 참조자를 사용하지 않으면 복사생성이 되나요?catch(MyException exp) { // 생략 }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2468 질문있습니다!
http://boj.kr/edaf5f63d5104445b6740ef8ab48e5c6 강의를 듣기 전에 문제를 풀어서 제출을 했습니다.예제는 맞았는데 틀린 이유를 찾지 못했습니다. 한번 살펴봐주시면 감사하겠습니다!항상 감사합니다!
-
해결됨홍정모의 따라하며 배우는 C++
동적 2차원 배열 생성 시 연속된 메모리 할당 여부
안녕하세요. 강의를 듣고 난 후 메모리 상에서 row간에 인접한 주소를 가지는지, 즉 2차원 배열의 원소 전체가 메모리 상에서 연속되어 있는지 궁금하여 아래와 같이 작성한 후 실행해 보았습니다. int** matrix = new int* [row]; cout << intptr_t(&matrix[0]) << endl; cout << intptr_t(&matrix[1]) << endl; cout << intptr_t(&matrix[2]) << endl; cout << endl; for (int r = 0; r < row; r++) { matrix[r] = new int[col]; } cout << intptr_t(matrix[0]) << endl; cout << intptr_t(matrix[1]) << endl; cout << intptr_t(matrix[2]) << endl; ```x64로 빌드하였고, 각 row를 가리키는 포인터의 주소는 8 바이트씩 연속되어 있는것을 확인하였습니다. 하지만 각각의 row 의 첫 원소의 주소끼리는 간격이 일정하지 않았고, 여러 번 테스트를 해보니 row간의 주소가 증가하다 감소하는 경우도 있었기에 정적 배열과 달리 메모리가 연속되어있지 않다고 결론내렸습니다. 그런데 주소 사이의 간격이 과도하게 멀어지는것 같지도 않았기에 아래 그림과 같이 약간 느슨하게(?) 가까이 있는 느낌이 들었습니다. C++에서 new 키워드를 사용해서 메모리를 할당할 때에 무언가 법칙이 있는것 같은데, 위 코드처럼 연속적으로 메모리를 할당받는 경우에는 가능한 한 가까운 주소에 할당해주는 건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
m1 세팅 확인 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.이렇게 진행했는데 오류가 계속 뜹니다.visual studio code는 세팅을 하고 설치하면 될까요?추가로 터미널에서 줄바꿈 기능은 따로 없는걸까요?
-
해결됨[쥬신게임아카데미 버거쌤] 완전 초보자를 위한 게임 C++
c++ 다음 강의 계획이 궁금합니다.
안녕하세요?c++ 다음 커리큘럼은 개강일과 다루는 내용이 궁금합니다!