월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
강의에 나오는 문제들은 백준에도 존재하나요?
강의에 나오는 문제들은 백준에도 있나요?있다면 어떻게 검색을 해야하나요? 백준풀면서 잔디를 채우고 싶어서.. ㅎㅎ..
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
75. 최대 수입 스케쥴 sort
sort(T.begin(), T.end());하는 이유가 궁금합니다. 정렬 안해도 if(T[j].when<i) break;에서 걸러질텐데 앞에서 소팅하는 이유가 있는건가요?
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
코딩 스타일 질문
선생님 안녕하세요! 강의 잘 듣고 있습니다 !! 코딩 스타일에 대해서 질문이 있습니다. 선생님 강의를 보니 map[30][30], ch[30]와 같이 선언을 주로 하시는것 같습니다. 하지만 문제에서는 정점의 수 범위가 최대 20이라서 30까지 필요해보이지는 않아서요.제가 아직 코딩테스트를 한번도 본 적이 없어서 잘 모릅니다. 회사를 다니면서 최대한 효율적으로 코드를 작성하다보니 요구사항에 맞는 크기로 사용하는 버릇이 있네요. 문제에 맞는 범위의 배열을 선언하고, 그래프 정점이 1 -> 2로 간다면, 선생님은 인덱스 번호를 1로 맞추시는데, 0은 사용하지 않고 낭비됩니다. 이런 사항은 코딩테스트에서 신경쓰지 않아도 될까요? 단순히 문제 해결을 위해 위 사항쯤은 무시하고 편하게 코딩해도 되는지 궁금합니다 !!#include <iostream> #include <vector> using namespace std; static vector<vector<int>> graph; static vector<bool> visited; static int minCost = INT_MAX; int N; void DFS(int v = 0, int cost = 0) { // v에 방문 visited[v] = true; // 지금까지 누적된 비용이 min보다 높다면 리턴 if (cost > minCost) return; // 목적징에 도착 if (v == N - 1) minCost = minCost > cost ? cost : minCost; else for (int i = 0; i < N; ++i) if (!visited[i] && graph[v][i] >= 0) { // v에 방문하기 DFS(i, cost + graph[v][i]); visited[i] = false; } } int main() { int M; scanf_s("%d %d", &N, &M); graph = vector<vector<int>>(N, vector<int>(N, -1)); visited = vector<bool>(N, false); int f, t, c; // from, to, cost for (int i = 0; i < M; ++i) { scanf_s("%d %d %d", &f, &t, &c); graph[f - 1][t - 1] = c; } DFS(); printf("%d", minCost); }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
에라토스테네스의 체를 활용한 isPrime 함수
선생님 소수와 관련된 문제라 에라토스테네스의 체 알고리즘을 이용하여 배열에 미리 소수에 대한 여부를 파악하여 저장해두었습니다. isPrime 함수는 단순히 해당 배열의 값이 true인지 false인지 리턴을 하는것이라, 함수 자체의 의미가 없어지는거 같은 느낌이 들어서요. 실제 코딩테스트에도 이와같이 작성해도 문제가 없을까요? 아니면 함수의 의미에 맞게 함수 내부적으로 연산을 수행해야 할까요? #include <iostream> bool isPrime(int x); int reverse(int x); // 에라토스테네스의 체 알고리즘 static bool primes[100001]; int main() { int N, numInput; scanf_s("%d", &N); // 모두 true로 초기화 for (int i = 0; i < 100001; ++i) primes[i] = 1; // 0과 1은 소수가 아님 primes[0] = primes[1] = false; // 에라토스테네스의 체 알고리즘을 통해 모든 소수 판별 for (int i = 2; i <= std::sqrt(100001); ++i) { if (!primes[i]) continue; primes[i] = true; for (int j = i * 2; j < 100001; j += i) primes[j] = false; } // 나머지 계산 for (int i = 0; i < N; ++i) { scanf_s("%d", &numInput); int reverseNum = reverse(numInput); if (isPrime(reverseNum)) printf("%d ", reverseNum); } } bool isPrime(int x) { return primes[x]; } int reverse(int x) { int num = 0; while (x > 0) { num = num * 10 + x % 10; x /= 10; } return num; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
20번 가위바위보 질문있습니다
처음에 아래와 같은 식으로 하드코딩 했는데, out으로 나오는 답이 메모장에 있는 답과 같은데 정답이 아니라고 떠서 질문 남깁니다.왜 틀린 건지 알 수 있을까요? #define CRTSECURE_NO_WARNINGS#include <stdio.h>int main(){ int n, input; int a[101], b[101]; scanf("%d", &n); for (int i = 0; i < n; ++i) { scanf("%d", &input); a[i] = input; } for (int i = 0; i < n; ++i) { scanf("%d", &input); b[i] = input; } for (int i = 0; i < n; ++i) { // a가 가위를 낸 경우 if (a[i] == 1) { if (b[i] == 1) { printf("D\n"); } else if (b[i] == 2) { printf("B\n"); } else { printf("A\n"); } } // a가 바위를 낸 경우 else if (a[i] == 2) { if (b[i] == 1) { printf("A\n"); } else if (b[i] == 2) { printf("D\n"); } else { printf("B\n"); } } // a가 보를 낸 경우 else if (a[i] == 3) { if (b[i] == 1) { printf("B\n"); } else if (b[i] == 2) { printf("A\n"); } else { printf("D\n"); } } } return 0;}
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
55번 기차운행 문의드립니다.
안녕하세요. 3~5번 틀렸다고 하여 3~5번 값을 input.txt에 복사하여 컴파일 했을 때는 값이 같아서 문의드립니다. 디버그하여 하나씩 봐도 아직 부족하여 답을 못찾았습니다.. 놓친 부분이 어디인지 확인 가능할까요?? #include <iostream> #include <vector> #include <algorithm> #include <math.h> using namespace std; int main() { freopen("input.txt", "rt", stdin); int cnt = 0, o_cnt = 0, j = 1; int last; vector<int> a; vector<char> b; int n, m; cin >> n; for (int i = 0; i < n; i++) { cin >> m; a.push_back(m); b.push_back('P'); cnt++; while (1) { if (j == a.back()) { a.pop_back(); b.push_back('O'); j++, o_cnt++; } else break; } } if (o_cnt != cnt) { cout << "impossible"; return 0; } for (int i = 0; i <= b.size(); i++) { cout << b[i]; } return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
59번 종료조건
59번에 종료 조건이 없는데도 어떻게 값이 정상적으로 나오는건지가 궁금합니다!
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
44번 질문 있습니다
43번 문제는 이제 풀 수 있어서 44번 문제도 43번 처럼 진행했습니다. 그런데 3이 안나오고 다른 답만 나와서요 어디가 잘 못됐는지 알려주실수 있으실까요?#include<iostream> #include<vector> #include<algorithm> using namespace std; int n,m, a[1001]; int dis(int x) { int i,sum=0,cnt=1; for(i=1;i<=n;i++) { if(sum +a[i]>x) { sum = a[i]; cnt++; } else sum=sum+a[i]; } return cnt; } int main() { int i,lt,rt=0,max=-2147000000,mid,res=0; cin >> n >>m; for(i=1;i<=n;i++) { cin >> a[i]; rt +=a[i]; if(max<a[i]) max=a[i]; } lt = a[1]; while(lt<=rt) { mid = (lt+rt)/2; if(mid>max && dis(mid)<=m) { res = mid; lt = mid+1; } else rt=mid-1; } cout << res; return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
90번 심바문제 질문있습니다.
69 ~70 번째 줄인 while (!Q.empty()) { Q.pop(); } res = tmp.dis; }이 부분이 이해가 안됩니다. 왜 큐를 제거를 하는지 이전에 다 없어지지 않았나요? 그리고 dis를 하는이유도 궁금합니다. z로 설정을 다하셨는데 왜 갑자기 이렇게 나오는지....
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
48번 질문있습니다!
#include <iostream>using namespace std;int a[9][9];int b[9];int main(){ freopen("input.txt","rt",stdin); int i,j,max,rev=0,tmp=2147000000; float x=0.0,sum=0.0; int c[9]; for(i=0;i<9;i++){ for(j=0;j<9;j++){ cin>>a[i][j]; sum+=a[i][j]; } b[i]=(sum/9.0)+0.5; sum=0.0; } for(i=0;i<9;i++){ for(j=0;j<9;j++){ tmp=a[i][j]-b[i]; if(tmp<0){ tmp*=-1; } if(tmp<max){ max=tmp; rev=a[i][j]; } if(max==tmp){ if(rev<a[i][j]){ rev=a[i][j]; } } } c[i]=rev; max=2147000000; } for(i=0;i<9;i++){ cout<<b[i]<<' '<<c[i]<<endl; } return 0;}이렇게 짰을때 출력창에서 나머지는 다 똑같이 나오는데 첫번째 행의 평균과 가장 가까운수가 0이 나옵니다. 혹시 왜 이렇게 나오는지 알려주실 수 있나요...?
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
4번 문제만 계속 틀립니다.
안녕하세요 선생님!항상 좋은 강의 감사히 잘 듣고 있습니다.이번 문제에서 제 코드로는 4번 문제가 계속 틀렸다고 나와서 선생님 코드 그대로 따라했는데도 4번 문제가 틀렸다고 되더라구요... 채점기 output이 잘못된건지 제가 짠 코드가 잘못된건지 확인 부탁드립니다...! 제 코드#include <stdio.h> #include <cmath> int n; int a[11]; int b[100]; int c[1025]; int sum; int idx = 1; void DFS(int x) { if(x == n+1) { sum = 0; for(int i = 1; i <= n; i++) if(b[a[i]] == 1) sum += a[i]; c[idx++] = sum; } else { b[a[x]] = 1; DFS(x+1); b[a[x]] = 0; DFS(x+1); } } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); DFS(1); for(int i = 1; i <= pow(2, n); i++) { int temp = c[i]; if(temp == 0) continue; for(int j = 1; j <= pow(2, n); j++) { if(i == j) continue; if(temp == c[j]) { printf("YES"); return 0; } } } printf("NO"); return 0; }선생님 코드#include <stdio.h> int n; int a[11]; int total = 0; bool flag = false; void DFS(int x, int sum) { if(sum > (total/2)) return; if(flag) return; if(x == n+1) { if(sum == (total/2)) { flag = true; } } else { DFS(x+1, sum+a[x]); DFS(x+1, sum); } } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); total += a[i]; } DFS(1, 0); if(flag) printf("YES"); else printf("NO"); return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
채점 프로그램 관련 질문
안녕하세요 !채점 프로그램 관련 문의가 있어서 글을 작성하게 되었습니다.전에 풀었던 문제들을 다시 풀어보는 과정에서 전에 100점이 나왔던 문제들을 다시 한번 채점 프로그램을 돌리니 wrong_answer이라고 나와서(기존의 AA파일을 돌림) 답안 소스로 테스트를 해보았는데 똑같이 wrong_answer 라고 계속 나오는 문제가 발생해서 글을 작성하게 되었습니다.감사합니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
gets 관련 질문드립니다
7번 문제 (영어단어복구)에서 gets를 사용하였는데gets를 사용하면 오류가 떠서 사용을 못하게 되어서 찾아보니gets가 위험하여 fgets나 gets_s를 사용하라고 하던데fgets를 사용하니 개행문자까지 들어가서 for(i=0; arr[i]!='\n'; i++) 이렇게 사용하여 풀었는데혹시 공백이 포함된 문자열을 입력받을때 다른 좋은 방법이 있을까 질문드립니다! 그리고 대문자를 소문자 변환하여 다른 새 배열에 넣고 한번에 출력하셨는데혹시 for문 안에서 해당될때마다 문자 하나씩 출력하는것과 성능 차이가 있을까요? 감사합니다
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
강의 자료 다운로드가 안됩니다
강의 구매하고 강의자료 다운로드를 받으려는데 먼저 크롬에서 파일 다운로드가 차단돼었고크롬 보안을 끄고 다운로드를 받으려니 바이러스가있어서 다운로드가안된다고 뜨는데왜그런걸까요 ㅠㅠ
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
[47번 봉우리] 무엇때문에 안되는 걸까요?
[47번 봉우리 문제]똑같은 논리로 구조를 짰는데, 하나는 정답이고 하나는 오답이에요.왜일까요? 제가 생각했을때 둘의 차이는 배열의 할당 방식뿐입니다. (정적vs동적)배열을 포인팅 하는 방식에서 잘못된게 있나요...? [정답]#include <iostream> #include <cstdlib> #include <stdio.h> #include <queue> #include <vector> using namespace std; const int dir[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; int map[52][52], mem[52][52]; int n, i, j, cnt = 0; int main(void) { scanf("%d", &n); for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { scanf("%d", &map[i][j]); } } for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int ni, nj, k; bool b = true; for (k = 0; b && k < 4; k++) { ni = i + dir[k][0]; nj = j + dir[k][1]; if (map[ni][nj] >= map[i][j]) b = false; } if (b) { cnt++; // printf("i:%d j:%d일 경우에 cnt++\n", i, j); } } } printf("%d", cnt); return 0; } [오답]#include <iostream> #include <cstdlib> #include <stdio.h> #include <queue> #include <vector> using namespace std; int N; int *a; int dir[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; // (y,x) int main(int argc, char *argv[]) { scanf("%d", &N); int i, j, cnt = 0; int ni, nj, k; a = new int[(N + 2) * (N + 2)]; for (i = 1; i <= N; i++) for (j = 1; j <= N; j++) scanf("%d", a + i * (N + 2) + j); for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { bool b = true; for (k = 0; b && k < 4; k++) { ni = i + dir[k][0]; nj = j + dir[k][1]; if (*(a + ni * (N + 2) + nj) >= *(a + i*(N + 2) + j)) b = false; } if (b) { cnt++; // printf("i:%d j:%d일 경우에 cnt++\n",i,j); } } } printf("%d", cnt); free(a); return 0; } P.S.이것을 디버깅해보면서 느끼는데, Dev-C++이 제가 알던 Visual Studio보다 디버깅하기가 훨씬 힘드네요...ㅠㅠ 원래 그런건가요? 바쁘시겠지만 시간 되실때 디버깅 하는 팁도 영상으로 공유해주시면 도움이 정말 많이 될 것 같아요ㅠㅠ
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
IDE 질문입니다
IDE 를 DEV C++ 사용 하는대 Visual studio 로 해도 상관이 없나요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
89번 토마토 문제 질문있습니다.
안녕하세요 선생님 코드 32번째 줄 부터 if (map[xx][yy] == 0) { if (xx <= n && xx >= 1 && yy <= m && yy >= 1)}이렇게 구현하신지 이유를 알고 싶습니다. 왜냐하면 if (map[xx][yy] == 0 && xx <= n && xx >= 1 && yy <= m && yy >= 1)} 도 맞지 않나 생각이 들어서요 혹시 차이점이 있다면 답변 부탁드립니다.감사합니다.
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
라이브러리를 활용해서 문제풀이
안녕하세요 선생님!프로그래머스에서 코딩 기초 트레이닝 0단계를 모두 풀고나서 수강 중인 학생입니다.제가 문제를 풀고나서 강의를 보고 코드를 비교하면서 리뷰도 진행하면서 느낀 의문이 있습니다.저는 프로그래머스에서 algorithm과 같은 라이브러리를 활용해서 문제를 많이 풀었는데 선생님 강의에서는 그 라이브러리의 원리를 풀어서 푸는 문제가 많더라구요!모든 코딩에는 정답이 없겠지만 코딩테스트에서 활용해도 무방한지 궁금합니다 ㅎㅎ
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
32 선택정렬관련 질문
#include <iostream>using namespace std;int main(){ freopen("input.txt","rt",stdin); int a[100],n,i,j,tmp=0; cin>>n; for(i=0;i<n;i++){ cin>>a[i]; } for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(a[i]<a[j]){ tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } } for(i=0;i<n;i++){ cout<<a[i]; } return 0;}선생님, 선택정렬 짤 떄 혹시 이렇게 해도 상관없는건가요...?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
뒤집은 소수문제
제가 혼자 숫자 뒤집는 코드를 짜봤는데 혹시 여기서 무엇이 잘못되었는지 알려주실 수 있나요...? 콘솔창엔 아무것도 뜨지않았습니다.