월 33,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B 이 방식은 완탐방식일까요?
http://boj.kr/a788644d92fe4bc5bb99fe02b91e1f46항상 감사드립니다. 문제 풀기 전 최대 3가지방향과 16개의 범위로 3^16 이겠거니 완탐은 불가능하겠다. 생각하고 문제를 풀기 시작했는데요..막상 풀고 선생님 코드를 보니 제 코드는 완전탐색으로 푼것같은 느낌이 들어서 질문드립니다.사실 시간초과가 나야 정상인 코드가 아닌가 싶어 질문드립니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
Update_index 사용이유
안녕하세요질문이 있습니다Update_idx 를 사용하는 이유가 있나요?그냥 1부터 index를 시작하면 안되는지 궁금합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 질문입니다.
http://boj.kr/18b95ed906a04df18e9c99cc83358b9a제가 생각한 위 코드의 시간복잡도는 26c13*50*15입니다.시간 복잡도를 맞게 계산한걸까요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bits.stdc++.h 헤더파일에 대하여
안녕하세요. window 쓰고 있고 vs code를 쓰고있는데 오늘 구글링하면서 gcc 설치해서 다 적용시켜서 환경을 구축하였는데vs code에서 #include <bits.stdc++.h> 헤더파일을 넣으면 자동으로 적용이 되나요? 아니면 이 헤더파일을 쓰기 위해서는 따로 작업을 해야하나요? 또한 추가로 vs code 말고도 vs에서도 stdc++.h 헤더파일을 바로 사용 가능한가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
환경구축
안녕하세요 선생님.이전에 학교 수업때문에 visual studio 만 써왔고 이번에 visual stduio code를 사용하고 싶어서 인터넷에서 gcc도 다운하고 구글링과 youtube보면서 이것저것해서 했는데 가끔 오류가 뜨더라구요.. 혹시 window에서 vs code 환경 구축하는 방법 알려주실 수 있으신가요? 교안에는 mac에서만 하는 방법이 있어서..그리고 dev++ 대신 visual studio 로 하면 환경이 달라서 안될까요??코테는 주로 dev++로 진행되나요??
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 질문있습니다!
http://boj.kr/ba6ed0fbb18c4351a818827e1ef64b9e 메모리 초과가 뜹니다..어떤 부분이 잘못된 걸까요 ..?코드 상 오류는 없는 거 같아 더더욱 해결이 어렵습니다..
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 정답코드에 대해 잘 이해가 안 됩니다.
https://www.acmicpc.net/source/share/c19e6a890efe4edcb2a98fedca33b37b안녕하세요. 4-b가 어려워 강의를 들었는데도 답지코드도 이해가 안되는 부분이 있어서 질문드립니다. 16번째 라인에 sum += min(cnt, n - cnt); 해당 부분이 이해가 잘 안 됩니다. cnt를 구하는 부분이나 n-cnt를 하는 부분은 열을 뒤집을지 말지를 결정하기 위해 필요한 값이라는 것은 알고 있습니다. 하지만 min(cnt, n-cnt)를 구하여 열을 뒤집을지말지를 결정해서 연산+1 을 하는 것이 아니라, 더한다는 의미가 어떤 것인지 잘 이해가 안 갑니다.또한 행을 뒤집으면 최적해가 이미 정해졌다는 것까지는 강의를 듣고 어렴풋이 알 것 같은데, 행을 뒤집는 연산에 대한 +1은 하지 않는지도 궁금합니다. (행을 두개 뒤집는다든지, 한 개 뒤집는다든지,, 등) min(cnt, n-cnt)를 더하는 것이 행과 열의 연산을 모두 포함하는 것 같기도 한데 원리(?)에 대해 이해하기가 어렵습니다. 도와주세요!!
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 왜 틀렸는지 잘 모르겠습니다.
선생님 안녕하세요!최소값 확인오름차순모두 처리 했다고 생각하는데 1%에서 '틀렸습니다'로 나옵니다 ㅎㅎ...예제랑 제가 생각한 반례를 몇 가지 넣어보았으나 잘 통과하는 것으로 보입니다. 어떤 문제가 있을까요? 코드 링크 첨부드립니다.(변수명 너무 대충써서 죄송합니다..)https://www.acmicpc.net/source/74000922 항상 감사합니다.
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-I 타입 관련 질문드립니다.
모든 타입을 long long 타입으로 바꿨더니 성공을 하긴 했습니다!하지만 mid 부분을 int로 설정했을 경우엔 왜 안되는 것일까요...?mid가 아무리 커도 10억+10억보다는 작을 것이라 생각해서 int로 설정했는데, 이때는 오답이 나왔습니다...!!
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 한줄로 디버깅 하고 싶은데 혹시 이 부분 나눌 수 있을까요?
ret과 재귀로 호출하는 부분 최소 값으로 셋팅하는 결과를 실시간으로 보고 싶습니다. ret = min(ret, tsp(i, visited | (1 << i)) + dist[here][i]);이 부분 나눌 수 있을까요? int temp = tsp(i,visited | (1<<i)) + dist[here][i]);if(ret > temp) ret = temp;이런식으로 나누고 싶은데 어떻게 건드려야될지 모르겠습니다..
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-P 질문
http://boj.kr/66b6d01488da4e168d9834f8bd0d6127저는 조합을 이용해서 풀어보았는데 이 문제는 완전탐색으로 푸는게 더 나은 방법인가요??
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H 비트마스킹 질문 있습니다.
안녕하세요, 강의 잘 듣고 있습니다.문제를 읽고, 스스로 짜보고 있습니다.그런데 비트마스킹 부분에서 제가 생각한 것처럼 동작하지 않아 무슨 부분이 문제인지 궁금합니다.아무리 print를 찍어서 찾아보려고 해도 찾지 못해 질문드립니다. 문제 부분// DFS 함수 (18, 19번째 줄)if(a[y][x] & (1 << i)) continue;_ret += dfs(ny, nx); http://boj.kr/b423ee8869844758a31b0c3c5d67fd49
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p176 질문 드립니다
안녕하세요 큰돌님 😀 교안 p176에 10진법을 2진법으로 바꾸는 코드에서#include <bits/stdc++.h> using namespace std; vector<int> v; int main() { int n = 100; int b = 2; while (n > 1) { v.push_back(n % b); n /= b; } if (n == 1) v.push_back(1); // 마지막 몫이 1일 때 reverse(v.begin(), v.end()); for (int a : v) { if (a >= 10) // 이 조건은 16진법 변환을 위해 필요함. { cout << char(a + 55); // char(a + 55)에서 a가 10이면 char(65)가 되서 'A'가 된다. } // 16진법은 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}로 표현하는 방법 else { cout << a; } } return 0; }while문에서 조건을 n > 1로 하신 이유가 궁금합니다!while (n > 1) { v.push_back(n % b); n /= b; } if (n == 1) v.push_back(1); // 마지막 몫이 1일 때이 부분을while (n >= 1) { v.push_back(n % b); n /= b; }이렇게 바꾸면 문제가 생길까요?? 제가 n에 여러 값을 넣어봤을 땐 문제가 없었는데 반례가 있다면 알려주시면 감사하겠습니다!
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모리 초과가 나는데 선생님 코드와 어디가 다른지 모르겠습니다..ㅠㅠ
#include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <map> #include <queue> #include <string> #include <math.h> #include <cstring> #include <stack> using namespace std; int arr[3] = {}; int dmg[6][3] = { {1,3,9},{1,9,3},{9,1,3}, {9,3,1},{3,1,9},{3,9,1} }; int visited[64][64][64] = {}; struct A { int a; int b; int c; }; queue<A> mq; void BFS() { while (!mq.empty()) { int x = mq.front().a; int y = mq.front().b; int z = mq.front().c; mq.pop(); if (visited[0][0][0]) { break; } for (int i = 0; i < 6; i++) { int nx = x - dmg[i][0]; if (nx < 0) { nx = 0; } int ny = y - dmg[i][1]; if (ny < 0) { ny = 0; } int nz = z - dmg[i][2]; if (nz < 0) { nz = 0; } if (visited[nx][ny][nz] != true) { mq.push({ nx,ny,nz }); visited[nx][ny][nz] = visited[x][y][z] + 1; } } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; for (int i = 0; i < N; i++) { cin >> arr[i]; } mq.push({ arr[0],arr[1],arr[2] }); visited[arr[0]][arr[1]][arr[2]] = 1; BFS(); cout << visited[0][0][0]-1; } 메모리 초과가 나는데 아무리 봐도 어디가 나는지 모르겠습니다ㅜㅜ..
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 메모리초과
http://boj.kr/8e44c6b66d4644008651ce44ab448ea8res.push_back(k); for (int i = prev[k]; i != n; i = prev[i]) { res.push_back(i); }이 부분으로 인해서 메모리초과가 발생하는 거 같은데 왜 발생하는지 이유를 잘 모르겠습니다.
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-L 질문있습니다
http://boj.kr/96d35c5b502442c08daba88212df08c4큰돌님 코드를 보니까 string 사용하신 부분 외에는 거의 동일한 것 같은데 자꾸 3%에서 틀렸다고 나와요.이유를 알 수 있을까요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-I 질문있습니다.
투포인터를 하기 위해서 정렬을 사용하셨는데,문제를 읽어보면 '... a1, a2, ..., an으로 이루어진 수열이 있다. ... 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는'이라는 문구가 있어서, 정렬을 하게 되는 순간 기존의 index 순서가 바뀌기 때문에 함부로 정렬을 하면 안되는 문제 아닌가요?
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반례를 못찾겠습니다.
다음과 같이 선생님 코드를 참고하여 구현했는데 어디서 틀렸는지 모르겠습니다. http://boj.kr/ff14d895e1de44258e860f9df1dc81d9 그리고 수업을 들을 때 문제 풀이가 감도 안잡히면 해설을 조금 보고 풀이를 해본 다음에 그래도 안되면 코드를 참고해서 구현하는데 이런 방식으로 들어도 될까요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-B 질문
안녕하세요 강사님, 코드 관련해서 질문이 있습니다.강사님께선 int &ret = dp[STR][INT]; if(ret != -1) return ret; 방식으로 코드를 작성하셨고,저는if (dp[strength][intelli] != -1) return dp[strength][intelli];방식으로 코드를 작성했습니다.그런데, 제 코드는 계속 오류가 납니다.어떤 부분에서 오류가 나는지 알려주시면 감사하겠습니다.http://boj.kr/4e74c937e8b440c3989b1cfcceb69f53
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안에 제시된 string - split()의 효율성 관련 질문드립니다.
안녕하세요, 큰돌님!교안에서 제시된 내용을 기반으로 알고리즘 문제를 풀다가 궁금한 부분이 생겨 질문드렸습니다.교안에서 제시된 문자열 - split 함수는 아래와 같습니다.vector<string> split(string input, string delimiter) { vector<string> ret; long long pos = 0; 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; }저는 위 함수를 응용하거나 문제를 해결하는데, 오늘 백준의 5430번 문제를 해결할 때도 위와 같은 로직의 코드를 작성하여 문자열 split을 시도하였습니다.// I-2. 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. cin >> _p; // I-3. 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. cin >> _n; // I-4. 다음 줄에는 [x1, ... xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. cin >> _x; string origin = _x.substr(1, _x.size() - 2); vector<string> vs_x(_n); if(origin.empty()) { } else { int pos = 0; int cycle = 0; while((pos = origin.find(',')) != string::npos) { string tmp = origin.substr(0, pos); vs_x[cycle++] = tmp; origin.erase(0, pos + 1); } vs_x[cycle] = origin; } 코드에 대해 부연설명을 드리자면, 입력을 통해 문자열을 받게 되면, 해당 문자열의 첫번째와 마지막 인덱스를 제외한 문자열을 origin에 저장한 후, 이 문자열 origin을 컴마(,)를 기준으로 split 하였습니다. 예를 들어, [1, 2, 3]이라는 문자열을 입력(_x)으로 받았다면, 변수 origin에 1,2,3을 저장한 후 컴마를 기준으로 문자열을 split할 수 있습니다.하지만, 위 코드와 함께 문제를 해결하고자 할 때, 지속적으로 시간 초과 문제가 발생하였습니다. 따라서 split 함수를 다음과 같은 로직으로 변경한 후 답안을 다시 제출하였으며, 그 결과 시간 초과가 발생하지 않고 문제를 해결할 수 있었습니다.// I-2. 각 테스트 케이스의 첫째 줄에는 수행할 함수 p가 주어진다. cin >> _p; // I-3. 다음 줄에는 배열에 들어있는 수의 개수 n이 주어진다. cin >> _n; // I-4. 다음 줄에는 [x1, ... xn]과 같은 형태로 배열에 들어있는 정수가 주어진다. cin >> _x; string token = ""; vector<string> vs_x(_n); int cycle = 0; for(int j = 0; j < _x.length(); ++j) { if(isdigit(_x[j])) { token += _x[j]; } else { if(!token.empty()) { vs_x[cycle++] = token; token = ""; } } } 제가 궁금한 것은 위에 제시된 split에 대한 두 개의 로직이 왜 효율성 차이가 나는지 잘 모르겠습니다.. origin.erase(0, pos + 1)이 O(n)의 시간 복잡도를 요구하면서, 첫 번째 로직은 O(n^2)의 시간 복잡도와 두 번째 로직은 O(n)의 시간 복잡도를 필요로 할 수도 있겠다는 생각이 들기도 하지만, 정확하게 어떤 부분이 큰 차이를 불러 일으키는지 잘 모르겠습니다. 감사합니다!