월 33,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강사님과 조금 다른방식으로 풀었는데 왜 틀릴까요??
저는 강사님과는 반대로배열을 1로 다 채운다음받은 정사각형 만큼 0으로 바꾸었는데요어디서 잘못되어서 문제가 풀리지않을까요? ㅠㅠ #include <bits/stdc++.h> using namespace std; #define y1 aaaa int adj[104][104], visited [104][104]; vector<int> v; int n,m,k,x,y,nx,ny,res,x1,x2,y1,y2; const int dy[] = {-1, 0, 1, 0}; const int dx[] = {0, 1, 0, -1}; int dfs(int y,int x){ visited[y][x]= 1; int cnt=1; for(int i=0;i<4;i++){ ny = y +dy[i]; nx = x +dx[i]; if(nx<0||ny<0||ny>=m||nx>=n)continue; if(visited[ny][nx]==0 && adj[ny][nx]==1){ cnt+=dfs(ny,nx); }else{ continue; } } return cnt; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> m >> n >> k; fill(&adj[0][0],&adj[0][0]+m*n,1); for(int i=0;i<k;i++){ cin >> x1 >> y1 >> x2 >>y2; for(int x = x1;x<x2;x++){ for(int y = y1; y<y2; y++){ adj[y][x]=0; } } } for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(visited[i][j]==0 && adj[i][j]==1){ res++; v.push_back(dfs(i,j)); } } } sort(v.begin(),v.end()); cout << res << endl; for(auto z: v){ cout << z << endl; } return 0; }
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 16페이지
m2 맥북에어 사용자인데cd /Library/Developer/CommandLineTools/usr/include로 해서 들어가는 거까진 했는데여기서 mkdir bits를 하니 permission denied 가 떠서 접근권한 문제인거 같은데 어떤거를 변경해야 할 지 몰라서 질문합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-B 질문있습니다.
http://boj.kr/28d3e04e1fe9450c8b2adb485cb92e0c위처럼 이진탐색을 재귀로 구현하여 풀었는데 지피티 + 지니 다 써도 어디에서 예외가 발생하여 틀리는지 모르겠습니다..강사님 어디가 틀린것이고 자신이 짠 코드가 어디가 잘못됬는지 잘 모르겠을 때 어떻게 분석할 수 있는지도 궁금합니다..
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 반례 질문드립니다.
안녕하세요 선생님. 예제와 커뮤니티의 반례들은 모두 통과하는데, 백준 2%에서 오답으로 처리되어 질문드립니다.불이 시작되는 부분부터 BFS를 통해 표시를 해두고, J를 dfs로 움직이게 하는 로직으로 구현했습니다. http://boj.kr/8202d9f54d6b45e489a6888088d047e1
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-K 문제는 반드시 역추적하는 방법으로만 풀 수 있나요?
이중 백터를 만들어서 수열을 저장하는 저장하는 방법을 사용했는데.. 정답은 잘 나오는 거 같은데 메모리 초과가 뜹니다 ㅠㅠ 이 코드를 개선하여 통과하기는 어려울까요?다른 풀이들도 보니 역추적 방법으로만 풀더라구요 시험이라고 생각하면, 역추적 아이디어를 번뜩 떠올리기는 힘들 수도 있다는 생각도 드네요.. #include <bits/stdc++.h> using namespace std; int N, tmp, cnt; vector<int> v; vector<vector<int>> answer(1000001); int binary_search(int num){ long low = 0, high = v.size() - 1; while(low <= high){ long mid = (low + high) / 2; if(v[mid] == num){ return mid; } else if(v[mid] >= num){ // 배열의 값이 더 크다. 줄여야 한다 high = mid - 1; } else{ // 배열의 값이 더 작다. 늘려야 한다 low = mid + 1; } } return low; // 배열보다 이상인 인덱스 리턴 } int main() { ios_base:: sync_with_stdio(false); cin.tie (NULL); cout.tie (NULL); cin >> N; for(int i = 0; i < N; i++){ cin >> tmp; if(v.empty()){ v.push_back(tmp); answer[0].push_back(tmp); continue; } if(v.back() < tmp){ v.push_back(tmp); cnt++; if(i > 0){ answer[cnt] = answer[cnt-1]; answer[cnt].push_back(tmp); } } else if(v.back() > tmp){ int idx = binary_search(tmp); v[idx] = tmp; if(idx > 0){ answer[idx] = answer[idx-1]; answer[idx].push_back(tmp); } else{ answer[0].clear(); answer[0].push_back(tmp); } } } cout << v.size() << "\n"; for(int i = 0; i < answer[v.size()-1].size(); i++){ cout << answer[v.size()-1][i] << " "; } }
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 숨바꼭질5 26번 라인 visited 값 할당 부분 질문 있습니다.
선생님 안녕하세요 !숨바꼭질 5번 26번 라인에 질문이 한 가지 있습니다. 기존에 올라온 질문들을 보면서 visited를 2차원 배열에 처리하여 홀/짝을 구분해야 한다는 것과 qSize를 활용하는 로직은 이해가 됐습니다. 그런데 26라인의 부분이 이해가 잘 되지 않습니다.visited[turn % 2][nx] = visited[(turn + 1) % 2][x] + 1; 왜 (turn+1)%2 + 1 을 기준으로 turn%2에 값을 할당하는지 잘 모르겠습니다.bfs 로직에서 visited[next]에 값을 할당 할 때 here을 기준으로 +1을 하여 next를 할당하는데 (turn+1)%2 + 1을 기준으로 할당한 것이 잘 이해가 안 됩니다. 항상 감사합니다.새해 복 많이 받으세요!
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 메모리 초과가 나는 이유에 대하여 궁금합니다.
3-D Fire! 다음 코드 제출시 메모리 초과가납니다. 혼자 생각해봐도 고민이 해결되지않아 질문 올립니다. 코드:http://boj.kr/7b447402e3e04302bdc04ebb1e2c0105 좋은 강의 감사합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 질문있습니다!
http://boj.kr/982be70c6d1e4cd5bfcbf7f36bf6d7c8 큰돌님 풀이만큼 구현하기엔 아직 실력이 부족한듯하여, 우선 부딪혀보았습니다. 풀어는 보고 싶어서, 정말 단순하게 4분할 후 배열 생성하고, 전수 검사하고, 서로 다른 요소가 있다면 다시 재귀를 돌리는 식으로 구현해보았는데 어떤 문제가 있는 걸까요 ㅠ??
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-F 질문있습니다.
http://boj.kr/a301ab703f224734996c1f3bf87bf454 강의와 비슷한 원리로 슬라이딩 윈도우로 풀어봤습니다.간단한 것 같은데 어디서 반례가 발생하는 걸까요??도무지 해결이 되지 않아 질문 올립니다!
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
참조자 관련 질문 드립니다!
안녕하세요 선생님,선생님이 올려주신 정답 코드입니다. dfs에서 매개변수로 벡터에 참조자를 붙이셨는데, 참조자를 붙였을때와 붙지 않았을때의 차이, 그리고 왜 이 코드에서 참조자를 붙여야만 하는지를 알려주시면 감사하겠습니다. 좋은 강의 늘 감사드립니다!
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모리 초과 관련 질문 드립니다!
안녕하세요 선생님,http://boj.kr/2555600284cb48a2a7065e44862058b4 http://boj.kr/fdd2eb2834dd4f45a3f6f6c95feac99d 위가 메모리 초과가 발생한 코드, 아래가 통과한 코드입니다.해당 문제를 복습하기 위해 다음날 다시 코드를 짜봤는데, 메모리초과가 발생하여 통과된 코드와 비교해봤지만 두 코드 사이의 유의미한 차이를 찾지 못하여 무엇이 문제인지 잘 모르겠습니다. 또 메모리 초과는 어떤 환경에서 발생하며, 정확히 메모리 초과가 어떤 건지도 간략하게 설명해주시면 감사하겠습니다. 좋은 강의 늘 감사합니다.
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 질문있습니다.
http://boj.kr/5e6cf7cdc6fc4d2c8d4cbfe08d65038c y,x기준이 아닌 x,y기준으로 풀어보았습니다.오버플로우 조건식도 &&으로 바꾸어보았습니다. 테스트 케이스는 모두 통과했는데 또 오답입니다. 무엇을 잘못하고 있는 걸까요 ㅠ
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DFS, BFS 소스 코드 질문있습니다
http://boj.kr/eb95bf013f5d4203bfdb1e9e027fc489백준에 DFS,BFS문제가 있어 강의 소스코드 복습차 풀어봤는데, 테스트케이스는 통과하지만 제출했을 때 오답입니다.소스코드를 응용하지 못하고 놓친 포인트가 있을까요?
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R. 질문있습니다
http://boj.kr/eaf52073800f4b9397140cea145862d6제 코드에서 놓친게 무엇일까요..!현재 노드에서 이어진 것이 없고, 잘리지 않았다면 리프노드로 판단해서 수를 카운트 해주었는데 오답입니다
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 질문있습니다!
http://boj.kr/132cce1f1dab4af7be9ad1e722220221이 코드가 틀린 이유가 뭘까요..ㅠ 도저히 모르겠네요.그리고, 정답 풀이에서 check bool 변수가 하는 역할이 무엇일까요? 제 코드와의 차이가 check 플래그 변수가 없다는 것이 가장 큰 차이인 거 같은데 왜인지 모르겠습니다..
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 5-R 주사위 윷놀이 질문이 있습니다.
#include<bits/stdc++.h>using namespace std; const int INF = 987654321;int a[14], mal[4], n = 10;int v[104]; 에서 원소 값을 넣어주는 int v[104]; 의 배열 크기가 70, 80으로 해보면 값이 달라지는 것을 확인을 했습니다. 실제로 31까지 밖에 인덱스를 사용하지 않음에도 불구하고 100 이상으로 배열의 크기를 올려줘야 하는 이유는 무엇일까요? 통상적으로 +3정도 배열의 크기를 잡아주었습니다! 이번 예시로 앞으로 배열의 크기를 잡을 때 3배 정도의 크기로 잡아주어야 하나 고민을 하게 되었습니다.
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p85 stable_sort()
안녕하세요! 교안 p85의 stable_sort() 예제 코드에서#include <bits/stdc++.h> using namespace std; int main() { // pair의 첫 번째 요소는 정렬한 값, 두 번째 요소는 원래 인덱스를 나타냄 vector<pair<int, int>> pairs = {{5, 1}, {2, 2}, {5, 3}, {3, 4}, {2, 5}}; cout << "Original: "; for (const auto &p : pairs) { cout << "(" << p.first << ", " << p.second << ") "; } cout << "\n"; sort(pairs.begin(), pairs.end()); cout << "Sorted with sort: "; for (const auto &p : pairs) { cout << "(" << p.first << ", " << p.second << ") "; } cout << "\n"; // 원본 데이터로 초기화 pairs = {{5, 1}, {2, 2}, {5, 3}, {3, 4}, {2, 5}}; // stable_sort 사용 stable_sort(pairs.begin(), pairs.end()); cout << "Sorted with stable_sort: "; for (const auto &p : pairs) { cout << "(" << p.first << ", " << p.second << ") "; } cout << "\n"; return 0; }for (const auto &p : pairs) { cout << "(" << p.first << ", " << p.second << ") "; }여기에서 pairs에 들어있는 타입(pair<int, int>)이 왜 const auto &인지 궁금합니다!또 교안 p83의 예제 코드에서#include <bits/stdc++.h> using namespace std; vector<pair<int, int>> v; int main() { for (int i = 10; i >= 1; i--) { v.push_back({i, 10 - i}); } sort(v.begin(), v.end()); for (auto it : v) cout << it.first << " : " << it.second << "\n"; return 0; }위의 for 문에서 pair<int, int>를 받을 때는 auto 로 받는데,두 예제가 같은 pair<int, int> 타입을 받을 때 for (const auto &p : pairs) 와 for (auto it : v) 로 다른 이유가 무엇인지 알고싶습니다!
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 질문 있습니다
안녕하세요, 큰돌님 7-v 질문 드립니다.첫번째 풀이가 큰돌님의 답 코드와 비슷한 로직을 사용한다고 생각하는데,왜 시간 초과가 나는지 모르겠습니다.https://www.acmicpc.net/source/73255801백트래킹 풀이 (시간초과)https://www.acmicpc.net/source/73256688dp 배열 + 반복문 (맞았습니다!)
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이터레이터 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.현재 교안으로 1회독중에 이터레이터 부분에서 막혀 질문드립니다. cout << &*lower_bound(a.begin(), a.end(), 3) << endl; cout << &*a.begin(); cout << &*lower_bound(a.begin(), a.end(), 3) - &*a.begin() << endl;각각의 주소값이0x139e05e580x139e05e50 임을 가정했을때0x139e05e58 - 0x139e05e50 연산이 왜 8이 아니라 2가 되는지 모르겠습니다.
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 문제 시간초과
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.강의 잘 듣고 있습니다.!! 혼자 풀어보는 중인데, 시간초과가 나서 오랫동안 고민하다 질문드립니다. 제 생각에는 Fire를 전파하는 부분에서 비효율이 있는듯한데,이를 개선할 방법이 딱히 떠오르지 않아서요, 질문드립니다. ㅠ #include <bits/stdc++.h> using namespace std; int R, C; vector<vector<char>> maze; pair<int, int> jihun; vector<pair<int, int>> fire; vector<vector<int>> delta = {{0,-1},{1,0},{0,1},{-1,0}}; vector<vector<int>> visited; set<int> ret; void dfs(pair<int, int>J, int step){ step+=1; // cout << "DEBUG: " << step << ", (" << J.first <<"," << J.second << ")" << endl; // for(int i = 0 ; i < R ; ++i){ // for(int j = 0 ; j < C ; ++j){ // if (i ==J.first && j == J.second) cout << "J"; // else cout << maze[i][j]; // } // cout << endl; // } // cout << endl; if (J.first == 0 || J.second == 0 || J.first == R-1 || J.second == C-1){ ret.insert(step); return; } // 1. 맵 업데이트 int cnt = 0; int s = fire.size(); for(int q = 0 ; q < s ; ++q ){ for(int p = 0 ; p < 4 ; ++p){ int nextF_i = fire[q].first + delta[p][0]; int nextF_j = fire[q].second+ delta[p][1]; if (nextF_i >=0 && nextF_j >=0 && nextF_i < R && nextF_j < C){ if (maze[nextF_i][nextF_j] == '.' || maze[nextF_i][nextF_j] == 'J'){ maze[nextF_i][nextF_j] = 'F'; fire.push_back({nextF_i, nextF_j}); cnt ++; } } } } // 2. dfs 호출 propagation for(auto d : delta){ int next_i = J.first + d[0]; int next_j = J.second+ d[1]; if (next_i >= 0 && next_j >= 0 && next_i < R && next_j < C){ if (visited[next_i][next_j] == 0 && maze[next_i][next_j] == '.'){ visited[next_i][next_j] = 1; // 방문 처리 dfs({next_i, next_j}, step); visited[next_i][next_j] = 0; // 방문 원복 } } } // 3. 맵 원복 while(cnt>0){ pair<int, int> b = fire.back(); fire.pop_back(); maze[b.first][b.second] = '.'; cnt--; } } int main(){ cin >> R >> C; maze = vector<vector<char>>(R, vector<char>(C)); visited = vector<vector<int>>(R, vector<int>(C, 0)); string s; for(int i = 0 ; i <R ; ++i){ cin >> s; for(int j = 0 ; j < C ; ++j){ maze[i][j] = s[j]; if (maze[i][j] == 'J') jihun = {i,j}; else if (maze[i][j] == 'F') fire.push_back({i,j}); } } visited[jihun.first][jihun.second] = 1; dfs(jihun, 0); if (!ret.empty()){ cout << *ret.begin(); } else cout <<"IMPOSSIBLE"; return 0; }