월 33,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-C 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 항상 강의 잘보고 있습니다!http://boj.kr/abba975d09e94f2ca5ed26ec25a96886문제를 이런식으로 풀었는데 rets = min(rets,min)으로 했을 경우에는 틀리고 , rets = min으로 했을 경우에는 정답 처리가 됩니다. 혹시 min으로 하면 반례가 발생하는 경우가 있을까요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
sort에서 쓰는 cmp함수에 질문이 있습니다.
http://boj.kr/8d65e8a10d10408285809b81032c7b17안녕하세요 강사님. 좋은 수업 잘 듣고 있습니다.제가 이 코드에서 처럼 sort에 사용되는 cmp를 정의했는데, 제 컴퓨터에서는 잘 돌아가는데 boj에서는 runtime error(segmentation fault)가 발생합니다. 그래서 cmp를 이렇게 바꾸면bool cmp(pair<int, int> p1, pair<int, int> p2) { if (p1.second == p2.second) return p1.first < p2.first; return p1.second < p2.second; }잘 돌아갑니다. 왜 첨부한 링크의 cmp처럼 코드를 쓰면 segmentation fault가 발생하는지 궁금합니다. 감사합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
플로이드 워셜 알고리즘 질문있습니다.
안녕하세요 강사님, 강의 잘 듣고 있습니다.플로이드 워셜의 반복문 순서에 대해 질문드리고 싶습니다.흔히 경유지 노드를 k로 두고(k, i, j) 순으로 반복문을 구현하는데,k가 i와 j 사이에 들어가면 안 되는 명쾌한 이유가 무엇인가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
벡터 선언할 때 질문이 있습니다
안녕하세요 큰돌님! http://boj.kr/fedde0e4bf064dc4b05484aa6d98848e 기존에 있던 main 함수에서 선언하는for (int i = 1; i < 4; i++)v.push_back(i);이것을 주석처리하고전역에서vector<int> v{1, 2, 3};이렇게 하는 게 더 간단해보여서 해봤는데 오류가 뜹니다..이런 오류가 뜨는 이유가 궁금합니다원래는 run code 버튼 눌러서 실행했었는데c++ % g++ -std=c++11 -Wall a.cpp -o test.out로 컴파일 하니까 해결됐습니다..제 c++ 버전이 14라서 그런 것 같은데 전역에서 벡터를 vector<int> v{1,2,3}; 이렇게 선언하려면 무조건 컴파일을 c++ % g++ -std=c++11 -Wall a.cpp -o test.out 이렇게 해야할까요..?c++ % g++ -std=c++14 -Wall a.cpp -o test.out 했을때도 실행이 안 됐었습니다참고로 맥북m1입니다!
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-b for과 while
안녕하세요 선생님 저는 2-b문제를 두가지 방법으로 풀었는데 맞왜틀이라 질문드립니다. 첫번째 코드: https://www.acmicpc.net/source/75257463두번째 코드: https://www.acmicpc.net/source/75257408첫번째 코드와 두번째 코드의 차이는 k를 while로 돌리느냐, for로 돌리느냐 차이입니다. 첫번째 코드에서 while로 돌렸고 틀렸다고 나오는데, while이 어떤 문제로 틀렸다고 나오는걸까요? 결과물은 똑같은거같은데..
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
하나만 더 질문하겠습니다.
http://boj.kr/d5416161871e4bf3bdf3badcbae8c77c벡터를 이용해서 풀어보았는데 어떤 부분에서 예외처리가 부족한지 못찾고 있습니다.루트 노드를 삭제할 때, 중간 노드를 삭제할 때, 리프 노드를 삭제할 때 3가지 확인하였고, 루트노드가 0번이 아닐 수 있는 것도 확인했습니다. 어떤 반례가 있을까요?
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-C 시간초과 질문있습니다.
먼저 강사님이 5-A에서 설명하신 코드 대로 똑같이A,C를 풀 경우 맞습니다가 되고A에서 저만의 방식으로 문제 푼 것에 대해서는 맞았다고가 되는데C에서도 똑같이 저만의 방식 --> A에서 푼 방법으로 했을때는 시간초과가 뜹니다혹시 어떤식으로 바꿔야 시간초과를 해결할 수 있을까요?http://boj.kr/df57741592ee44f8861e0ed09227b476
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-B) 시간 복잡도 질문
안녕하세요 항상 강의 잘 듣고 있습니다!이 문제를 처음에 접근할 때 문제 하나를 클리어 할 수 있다면 상태값 STR , INT를 변화하면서 재귀를 도는 로직을 생각했습니다. 그러니 당연히 상태값 (STR,INT)이 겹치는 부분이 있고 DP로 풀면 효율적이겠거니 생각했는데요.. 아쉽게도 조금 틀렸지만 ㅜㅜ선생님이 0~1000, 1000~0 딱봐도 많다! 하셨던게1000^50을 말씀하신걸까 궁금증이 생겨서 질문드립니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 32p
안녕하세요 선생님! 알고리즘 공부를 이제 막 시작한 학생입니다 😀 다름이 아니라 강의 중에 보여지는 알고리즘 교안과 제공해주신 알고리즘 교안이 차이가 있는 것 같아서 질문드립니다.혹시 강의 중에 보여지는 교안은 어디서 다운받는지 알려주실 수 있을까요..? <강의에 보여지는 교안> <제공해주신 교안>
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-T 질문, 시간초과 (moveShark)
오래 걸렸지만, 혼자 풀어서 정답처리가 되었는데,모듈러 연산으로 moveShark를 한것이 아니고, 한 칸 한 칸 이동하는 방식이었습니다.운 좋게 통과한 것 같네요. #include <bits/stdc++.h> using namespace std; int R, C, M; vector<vector<tuple<int, int, int>>> B; void moveShark(vector<vector<tuple<int, int, int>>>& B){ vector<vector<tuple<int, int, int>>> tempB = B; vector<vector<int>> visited(R+1, vector<int>(C+1,0)); for(int i = 1 ; i <= R; ++i){ for(int j = 1; j <= C; ++j){ int speed = get<0>(B[i][j]); int delta = get<1>(B[i][j]); // d:up(1), d:down(2), d:right(3), d:left(4) int size = get<2>(B[i][j]); if (size != 0){ if (visited[i][j] == 0) tempB[i][j] = {0,0,0}; if (delta == 1){ int s = i; int mov = -1; int sd = speed; while(sd > 0){ if ((s+mov >= 1) && (s+mov <= R)) s = s+mov; else{ s = s-mov, mov *= -1;} if ((s == 1) || (s == R)) mov *= -1; sd--; } if (visited[s][j] == 0 ||get<2>(tempB[s][j]) < size){ if (mov == -1) tempB[s][j] = {speed, 1, size}; else tempB[s][j] = {speed, 2, size}; visited[s][j] = 1; } } else if (delta == 2){ int s = i; int mov = 1; int sd = speed; while(sd>0){ if ((s+mov >= 1) && (s+mov <= R)) s = s+mov; else s = s-mov, mov *= -1; if ((s == 1) || (s == R)) mov *= -1; sd--; } if (visited[s][j] == 0 || get<2>(tempB[s][j]) < size){ if (mov == -1) tempB[s][j] = {speed, 1, size}; else tempB[s][j] = {speed, 2, size}; visited[s][j] = 1; } } else if (delta == 3){ int s = j; int mov = 1; int sd = speed; while(sd>0){ if ((s+mov >= 1) && (s+mov <= C)) s = s+mov; else s = s-mov, mov *= -1; if ((s == 1) || (s == C)) mov *= -1; sd--; } if (visited[i][s] == 0 || get<2>(tempB[i][s]) < size){ if (mov == -1) tempB[i][s] = {speed, 4, size}; else tempB[i][s] = {speed, 3, size}; visited[i][s] = 1; } } else if (delta == 4){ int s = j; int mov = -1; int sd = speed; while(sd>0){ if ((s+mov >= 1) && (s+mov <= C)) s = s+mov; else s = s-mov, mov *= -1; if ((s == 1) || (s == C)) mov *= -1; sd--; } if (visited[i][s] == 0 || get<2>(tempB[i][s]) < size){ if (mov == -1) tempB[i][s] = {speed, 4, size}; else tempB[i][s] = {speed, 3, size}; visited[i][s] = 1; } } } } } B = tempB; } int fishShark(vector<vector<tuple<int, int, int>>>& B, int c){ int size = 0; for(int i = 1; i <= R; ++i){ size = get<2>(B[i][c]); if (size != 0){ B[i][c] = {0,0,0}; break; } } return size; } void debug(){ for(int i = 1; i <= R ; ++i){ for(int j = 1; j <= C ; ++j){ cout << get<0>(B[i][j]) << "," << get<1>(B[i][j]) << "," << get<2>(B[i][j]) << "\t" ; } cout << endl; } } int main(){ cin >> R >> C >> M; B = vector<vector<tuple<int, int, int>>>(R+1, vector<tuple<int, int, int>>(C+1, {0,0,0})); int r, c, s, d, z; for(int i =0 ; i < M ; ++i){ cin >> r >> c >> s >> d >> z; B[r][c] = {s, d, z}; } long long ret = 0; for(int i = 1; i <= C ; ++i){ // cout << i << "th" << endl; // debug(); ret+=fishShark(B, i); // cout << "SZ: " << ret << endl; moveShark(B); } cout << ret; return 0; }
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-B stack 질문있습니다
98퍼에서 틀렸다고 뜨는데 반례를 도저히 못찾겠어서 질문 남겨봐요!http://boj.kr/976bc09df4c24ac3bb144e15767bdf41
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-B erase풀이법 질문 있습니다.
안녕하세요 선생님 먼저 시간 복잡도에 관해서 질문이 있는데왜 이중 for문으로 100만 X 100만이 무식하게 풀었을 때의 시간복잡도인지 잘 모르겠습니다. 두번째로 최대의 시간 복잡도일때가CC....CC444..44 (각 50만개씩 일때)C4를 폭발 하는게 최대가 아닌가요 ? 마지막으로http://boj.kr/6586bfc6badd4b5b9d1653b7a2462d1a이게 왜 시간초과인지 잘 모르겠습니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-B 시간초과
http://boj.kr/11f4fe5e2b174361968323f94b94f219http://boj.kr/8b939f4ade88488f89afc3b312f8867d위 2개의 코드의 차이점은 +=사용 유무인데 res+=c;를썻을때는 통과가 되었지만 res=res+c를 썻을때는 시간초과가 났습니다. +=유무가 이렇게 유의미한 차이를 만들어내는 건가요?? 왜 이런지 이유가 궁금합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간복잡도 관련 질문 드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.강의에서는 시간복잡도가 13 combi k * 100 이라고 말씀하셨는데, 제 생각을 정리하자면 다음과 같습니다. 모든 치킨집 중에 사용가능한 치킨집을 뽑는다. 그리고 뽑은 경우의 수마다 모든 집들과의 최소거리를 구한다. 이 때 만일 치킨집을 3개 뽑았고 모든 집의 갯수가 2개라면 한집마다 3개의 치킨집과의 거리를 비교해야한다.따라서 이 로직은 문제 조건에 따라 13 combi k * 100 * k 의 시간복잡도를 갖는다.그래서 제 생각에는 13 combi k * 100 * k 의 시간복잡도를 가질 거 같은데 혹시 실수한 부분이 있을까요?감사합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 질문
for(int i=0;i<6;i++){ int na = max(0,a - S[i][0]); int nb = max(0,b - S[i][1]); int nc = max(0,c - S[i][2]); if(visited[na][nb][nc]) continue; visited[na][nb][nc] = visited[a][b][c] + 1; Q.push({na,nb,nc}); }이 코드에서 for문을 통해 6가지 경우를 따질 경우, 6가지 경우를 visited[][][] 이 하나의 배열에서 따지면 각 경우에서 값들이 안 겹치는 이유가 뭔가요..? 저는 처음에 값이 겹칠 경우를 고려하여 배열을 다 따로 해야된다고 판단했네요 ㅠㅠ
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 질문 드립니다
안녕하세요 큰돌님 😀1-N 백준 1629 문제에서 제공해주신 코드에#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a, b, c; ll go(ll a, ll b){ if(b == 1) return a % c; ll ret = go(a, b / 2); ret = (ret * ret) % c; if(b % 2)ret = (ret * a)% c; return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> a >> b >> c; cout << go(a, b) << "\n"; return 0; }여기에서if(b % 2)ret = (ret * a)% c;원래 공식에 대입하면 이 부분에 (ret * a % c) % c 가 들어오는 것이 맞지 않나요..? 어떻게 이렇게 되는지 궁금합니다 ㅜㅜgo(2, 3) 이라고 할 때,이렇게 되어서if(b % 2)ret = (ret * a)% c;이 아니라,if(b % 2)ret = (ret * (a % c))% c;가 된다고 생각했는데 설명해주시면 감사합니다..ㅜㅜ 다른 질문에 답변 달아주신 내용 확인해서 이해하였습니다~!!
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 분할정복 반례를 찾지 못하겠습니다.
안녕하세요 큰돌님2-E 문제에서 반례를 찾지 못해서 질문드립니다.다음과 같이 주어진 배열을 재귀적으로 나누어서배열 크기가 1일때부터 string으로 다시 합치는 코드입니다.#include<bits/stdc++.h> using namespace std; string a[64][64]; int n, ny, nx; string ret, temp; int dy[] = {0, 0, 1, 1}; int dx[] = {0, 1, 0, 1}; string four(int num, int y, int x){ if(num == 1){ return a[y][x]; } else{ string s = ""; for(int i = 0; i < 4; i++){ ny = y + dy[i] * (num / 2); nx = x + dx[i] * (num / 2); s += four(num / 2, ny, nx); } if(s == "0000") return "0"; else if(s == "1111") return "1"; else return "(" + s + ")"; } } int main(){ cin >> n; for(int i = 0; i < n; i++){ cin >> temp; for(int j = 0; j < n; j++){ a[i][j] = temp[j]; } } if(n == 1) { ret = "(" + a[0][0] + ")"; cout << ret << '\n'; } else{ ret = four(n, 0, 0); if(ret == "0" || ret == "1") ret = "(" + ret + ")"; cout << ret << '\n'; } return 0; }
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문 있습니다.
http://boj.kr/19b569e6243a4c24b597ed31b2dbdbc3테스트케이스 통과하고, 질문게시판을 통해 루트노드만 있을 때 예외처리까지 처리했지만 제출하면 바로 실패로 뜨는데 어떤 반례가 있을까요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
방문할 수 없는 지점 질문
http://boj.kr/92388f57a46746da910101a9b3400b69문제를 풀고 정답이 되어서 답안을 확인하는데 overflow 조건 체크 후 방문가능한 지점인지 체크하는 과정에서 제가 ny,nx 대신 y와 x를 입력해도 정답처리가 되었습니다. 생각해보면 반드시 방문할 수 없는 지점을 방문하는 형태가 되어 오답이 나와야 할 것 같은데 정답이 나와 질문드립니다!먼저 방문을 하고 어차피 이동을 못하니까 결과가 같을 거라고 예상은 되지만 큰돌님의 답변이 궁금합니다!
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 자바스크립트 코드 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/4407e944ea384e408f615a6ef1ca8be5http://boj.kr/b5895e45632846f2b6f7448082492dda안녕하세요.2-S 문제를 자바스크립트로 구현해보았는데 첫번째 링크의 코드와 두번째 링크 코드의 차이는 그래프를 맵으로 구현한 것과 배열로 구현한 것 차이라고 생각합니다.맵 자료형의 Value에 해당하는 부분도 배열로 구현했기에 두 코드의 시간복잡도가 동일하다고 생각했는데 첫번째 링크는 통과하고 두번째 링크는 시간초과가 나옵니다.맵으로 구현한 코드가 O(V+E)라면 배열로 구현한 코드가 O(V*E)라서 시간초과가 나는걸까요??감사합니다!