월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
선생님 안녕하세요!
선생님 안녕하세요!! 저번에 공부법관련해서 질문드렸던 학생입니다.. 기억하시나요??? 질문은 아니고 제가 sw마에스트로 코딩테스트에 합격을 해서 이렇게 소소한 소식 전하러 왔습니다..ㅎㅎ 선생님 좋은 강의 감사합니다. 앞으로 더 열심히 하도록 하겠습니다!!
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
PQ 말고 그냥 queue로 하면 틀린것인가요??
안녕하세요 선생님 저는 이 문제에서 왼쪽과 위쪽 우선순위를 그냥 for loop 돌 때 dx dy 순서를 그렇게 짜면 되겠다 해서 밑에 코드처럼 짰습니다 저렇게 되면 답이 맞지 않는 것인가요?? (맥을 이용중이라 채점 프로그램을 쓰지 못하고 있네요 ㅠㅠ) #include <stdio.h> #include <vector> #include <queue> using namespace std; int map[30][30]; int time=0, size=2, n, cnt=0; int dx[4]={0,-1,1,0}; int dy[4]={-1,0,0,1}; struct Loc{ int x; int y; Loc(int a, int b){ x=a; y=b; } }; queue<Loc> Q; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ scanf("%d",&map[i][j]); if(map[i][j]==9) { Q.push(Loc(i,j)); map[i][j]=0; } } } while(!Q.empty()){ Loc tmp = Q.front(); Q.pop(); for(int i=0;i<4;i++){ int xx = tmp.x+dx[i]; int yy = tmp.y+dy[i]; if(xx>=1 && xx<= n && yy>=1 && yy<=n && map[xx][yy]<=size && map[xx][yy]!=0){ Q.push(Loc(xx,yy)); cnt++; if(map[xx][yy]<size){ if(size==cnt) size+1; map[xx][yy]=0; } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(map[i][j]!=0) printf("%no"); } } printf("%d",&cnt); return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
자료구조는 전부 다뤄주시나요?
안녕하세요. 좋은 강의 잘 보고 있습니다. 강의를 보던 중 자료구조 책을 따로 살지 말지 고민중입니다. 책을 사면 더 좋지만 강의를 더 반복해서 돌려보는 편이 집중이 잘 되는 편 입니다. 강의에서 필요한 자료구조는 다 다뤄주시면 사진 않을 생각이라 여쭤봅니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
cnt 배열 크기 질문입니다.
안녕하세요. 정말 잘 보고 있습니다. 다름이 아니라 질문이 있습니다. cnt[50001] 배열의 크기가 설명 해주신대로 의하면 50,000까지 해야하므로, 0부터이니까 50,000으로 해야 더 정확한 것 아닐까 하여 여쭤봅니다. 50,001로 범위를 잡는다해서 문제는 안되겠지만 조금 더 정확성을 위해 여쭤봅니다! :D 답변 주시면 감사하겠습니다!
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
맞는지 모르겠습니다
선생님 저는 문제를 잘 이해하지 못한건지;; 이렇게 짰습니다 첫번째로 pizza라는 페어를 새로 만들어서 할당해도 괜찮은지 궁금합니다 그리고 강의에서는 dis = min(dis) 이렇게 하셨는데 이게 이해가 안갑니다 모든 집에서 선택된 피자가게까지의 거리를 더한 후에 그것의 min 값을 구하는 문제가 아닌가요..? #include <iostream> #include <algorithm> #include <vector> using namespace std; int n, m, res; vector<pair<int, int> > map[30]; pair<int, int> pizza[30]; dfs(int s, int L){ if(L==m){ for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ sum += abs(map[1][i].first-map[2][j].first) + abs(map[1][i].second-map[2][j].second); } } if(res>sum) res=sum; } else{ for(int j=s;j<map[2].size();j++){ pizza[j] = map[2][j]; dfs(j+1,L+1); pizza[j] = {0,0}; } } } int main(){ int x; scanf("%d %d",&n,&m); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%d",&x); if(x==1){ map[1].push_back(make_pair(i,j)); } else if(x==2){ map[2].push_back(make_pair(i,j)); } } } dfs(0,0); return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
55강 가차운행에서
코딩테스트에서 이렇게 system("cls"); cout << "impossible"; imposible 시에 콘솔화면을 지우고 출력해도 되나요 ? (왜냐면 제 코드는 P나 O값을 배열에 넣지 않고 그냥 출력하기 떄문에 imposible 이더라도 P나O가 출력이 됩니다. 그렇기때문에 지우고 imposible 출력하도록 하였는데요) #include <iostream> #include <stack> #include <vector> #include<algorithm> using namespace std; int main(void) { int i = 0, arr[4] = { 2,3,1,4 }, search = 1; //cin >> n; //cin >> m; stack<int> s; for(i=0;i<4;i++){ s.push(arr[i]); cout << 'P'; while (!s.empty()) { if (s.top() == search) { search++; s.pop(); cout << 'O'; } else break; } } if (!s.empty()) { system("cls"); cout << "impossible"; } }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
왜 이렇게 벡터를 선언하면 작동이 되지 않을까요?
각각의 vector를 따로 선언하지 않고, 한꺼번에 모아서 한꺼번에 정렬하면 보시는 것 처럼 정상 작동이 되지 않습니다 입력은 원래와 같이 5 2 7 10 5 3 5 3 10 17 12입니다. 정상출력은 3 5 10입니다. 이에 실제로 출력해보니, 첫번째 벡터는 7 10 5 3 5 두번째 벡터는 3 10 3 10이 되는 것을 확인했습니다 그러나, vector를 따로 선언하고 입력을 넣으면, 제대로 입력되는 것을 확인할 수 있습니다. 어떠한 이유일까요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
배열 위치
int a[60], b[60]; 이것을 main() 함수에 집어넣으면 no 라고 나오고 ex) int main() { int a[70],b[70]; main()위에 전역함수? ex) int a[70],b[70]; int main(){ 로 넣으면 yes로 나오는데 왜 그런건가요..
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
선생님 안녕하세요!!
선생님, 강의 항상 잘 보고 있습니다. 저는 삼성전자가 목표입니다. 일단 시뮬레이션이나 DP부분을 제외하고 BFS DFS는 최소 두 번씩 들으면서 어느 정도 감을 잡고 있는데요, 그리고 맨 마지막에 선생님이 적어주신 풀어볼 만한 문제 항목을 참고하여 한달 내내 그것만 풀었네요..ㅎㅎ 완벽하게 모든 문제를 풀진 못했지만 그래서 이제 삼성 기출 문제에 도전을 해보려고 하는데 기출 문제를 풀면 엄청 갑자기 벽이 느껴져서 이후 어떻게 공부하면 좋을 지 여쭙고 싶습니다.. 그냥 이대로 계속 문제를 풀고 모르면 누군가의 코드를 참고하거나 설명을 듣는 방식을 고수해야할지 뭔가 다른 방식이 필요할지 감이 오질 않네요. 감사합니다!!
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
48??
48만큼 빼줘야하는 이유가 뭔가요?? else year=2000+((a[0]-48)*10+(a[1]-48));
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
max 와 min
int max = -214000000; int min = 214000000; Q1.여기서 max 와 min이 바뀐이유가 뭘까용? int max = 214000000; int min = -214000000; 이렇게 max , min을 입력하고 빌드 실행하면 이상한 값이 출력되던데요. Q2. 그 이유가 있을까요??
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
깃허브 업로드 관련 질문 드립니다.
안녕하세요. 강의를 수강 중인 학생입니다. 수강 중 깃허브 업로드와 관련하여 질문 드립니다. 문제를 풀면서 제가 작성한 코드와 주석으로 두세 줄 정도의 간단한 문제 설명, 코드 설명을 깃허브에 public으로 업로드 하려는데 혹시 문제가 있을까요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
38번 문제 시간초과
선생님 안녕하세요. 강의 잘 듣고 있습니다. 38번 문제를 어렵게 어렵게 혼자 풀어봤는데요 답은 잘 나오지만 시간 초과로 채점기에 0점이 나왔습니다. 선생님께서 풀어주신 것과 제 코드를 비교해 보면 pos 변수를 사용 여부 차이 정도 있는 것 같은데 이렇게 코드를 짜면 왜 타임 리밋이 나올까요? 좋은 강의 감사드립니다 :) #include <iostream> #include <vector> #include <algorithm> #include <utility> #include <cstdlib> #include <string> using namespace std; int main() { ios_base::sync_with_stdio(false); freopen("input.txt", "rt", stdin); int n; cin>>n; vector<int> is(n+1); vector<int> os(n+1); for(int i=1;i<n+1;i++){ cin>>is[i]; } for(int i=n;i>=1;i--){ for(int idx=i;idx<i+is[i];idx++){ os[idx]=os[idx+1]; } os[i+is[i]]=i; } for(int z=1;z<n+1;z++){ cout<<os[z]<<" "; } return 0; }
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
코드를 똑같이 실행시켰는데 자꾸 에러가 뜹니다
#include<iostream> #include<vector> #include<algorithm> using namespace std; struct Loc{ // 구조체 선언 int x, y, z; // 구조체 멤버 선언 Loc(int a, int b, int c){ // 구조체 생성자 선언(초기화하기 위햬) x=a; y=b; z=c; } // 크기를 비교하는 연산자, 연산자 오버로딩 함, 두 객체의 크기를 비교함, 정렬기준을 잡음 bool operator<(const Loc &b)const{ // 구조체를 주소로 받음, b를 통해서 원본을 바꿈, 이를 차단하기 위해서 const 선언 // operator를 const로 선언하여 x,y,z를 변경할 수 없게 함 return x<b.x; // opreator에 있어서 호출한 객체 x는 앞에 Loc &b해서 넘어온 인자로 넘어온 객체는 뒤에 그리고 앞에것을 작은것 뒤에것을 큰 걸로 정렬을 하게끔 오름차순으로 정렬함 } }; int main(){ // freopen("input.txt","rt",stdin); vector<Loc> XY; // 구조체형 vector 선언 XY.push_back(Loc(2, 3, 5)); XY.push_back(Loc(3, 6, 7)); XY.push_back(Loc(2, 3, 1)); XY.push_back(Loc(5, 2, 3)); XY.push_back(Loc(3, 1, 6)); // 구조체 생성자 활용하여서 그 값을 넣음 sort(XY.begin(),XY.end()); // 정렬을 시킴, x를 기준으로 구조체 객체를 정렬시킴, 즉 2, 3, 5에서의 x 값 2의 값으로 정렬함 뒤의 값은 무관함 for(auto pos:XY) cout << pos.x << " " << pos.y << " " << pos.z << endl; return 0; } 이렇게 코드를 똑같이 쳤는데 컴파일 에러가 뜹니다 에러의 내용이 [Error] 'pos' does not name a type이라고 뜨는데 선생님 코드와 동일한데 제 코드에는 왜 에러가 뜨는지 모르겠습니다
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
풀이 방법 질문 있습니다
안녕하세요 선생님. 강의 잘 듣고 있습니다. 다름이 아니라 이번 문제를 꼭 버블 정렬로 풀어야 하는지에 대해서 질문하고 싶은데요, 저는 문제를 보고 버블정렬로 풀어야겠다라는 생각이 들지 않고, 그냥 입력받은 배열을 순차탐색하면서 음수만 순서대로 다른 배열에 저장하고, 양수만 따로 순서대로 또다른 배열에 저장한 뒤, 음수를 저장한 배열의 element값을 순서대로 기존 배열에 대입하고, 양수를 저장한 배열의 element값을 순서대로 기존 배열에 대입하여 값을 출력하는 방식으로 문제를 해결하였습니다. 제가 아직 실력이 부족해서 그런것도 있겠지만, 이 문제를 꼭 버블정렬로 풀어야 하는지 궁금합니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
25번 문제 관련 질문!
안녕하세요 선생님 강의 잘 듣고 있습니다. 현재 25번 문제를 풀었는데요, 다른 부분은 강의 코드와 동일한데 일반 배열로 선언하지 않고 벡터로 선언을 했습니다. vector<int> a(n); vector<int> b(n); 이런 식입니다. 그런데, 점수가 40점이 나오네요. 어떤 차이가 있는지 알고 싶습니다. 감사합니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요 선생님 요새 파이썬도 공부하는데 문제가 있어서 글을 남깁니다.
선생님 항상 강의 잘 듣고 있습니다... 1. 파이썬 코드(체인해싱테이블)여쭤볼게 있는데 질문해도 괜찮을까요?? 2. 지금 선생님 c++ 강의를 다 들어가는데 코딩테스트를 볼 때 파이썬과 c++ 사이에서 고민이 많이되고 있습니다. 익숙하고 더 오래쓴 언어는 c++인데 파이썬이 좀더 쉽고 편하다고 들어서 지금 파이썬 기본적인 문법은 떼고 있습니다. 파이썬으로는 기본적인 자료구조(스택,큐,트리,해시테이블)까지는 했어요.. 처음에는 두 언어 사이가 헷갈려서 애 먹었는데 이젠 좀 쓸만하네요 질문이 좀 이상한데, 저의 경우에 익숙한 언어인 c++과 파이썬 사이에서 어떤 언어를 선택하는게 더 좋을지 궁금합니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
코딩테스트 관련 질문입니다.
안녕하세요 선생님 LG CNS 공채의 코딩테스트 관련된 안내문을 봤는데 대상언어가 Java, C, C#, Python 중 택1 이라고 나와있던데 이러면 C++로는 못푸는건가요? 이강의는 C, C++이라 이강의에서 배우면 상관이없나요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요 선생님 저는 bfs로 풀어봤는데요..
예제랑 테스트케이스(input 1,2) 전부 맞게 나오는데 왜 틀렸는지 모르겠어서 주석과 함께 설명을 넣었습니다. 어느 부분이 문제인지 확인해주시면 감사하겠습니다ㅜ! #include<stdio.h> #include<iostream> #include<vector> #include<queue> #define MAX 21 using namespace std; int map[MAX][MAX]; int dp[MAX][MAX]; bool visited[MAX][MAX]; int n; typedef struct Node { int x; int y; int dp; }node; queue<node>Q; int dx[2] = { 0,1 }; int dy[2] = { 1,0 }; void BFS() { node current; while (!Q.empty()) { current.x = Q.front().x; current.y = Q.front().y; current.dp = Q.front().dp; Q.pop(); /* printf("<<<(%d,%d,%d)에서 탐색을 시작합니다. >>>\n\n", current.x, current.y, current.dp); printf("<<<현재 dp배열의 상태입니다. >>\n\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%d ", dp[i][j]); } printf("\n"); }*/ for (int i = 0; i < 2; i++) { int x = current.x + dx[i]; int y = current.y + dy[i]; if (x >= n || y >= n) {continue;} if (dp[x][y] > current.dp + map[x][y]) { /*printf("current.dp : %d\n\n", current.dp); printf("map[x][y] : %d\n\n", map[x][y]);*/ dp[x][y] = current.dp + map[x][y]; node next; next.x = x; next.y = y; next.dp = dp[x][y]; //printf("(%d,%d,%d)에서 BFS탐색을 계속합니다. \n\n", next.x, next.y, next.dp); Q.push(next); } } } return; } int main() { cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> map[i][j]; dp[i][j] = 1000000; } } node start; start.x = 0; start.y = 0; start.dp = map[0][0]; dp[0][0] = map[0][0]; visited[0][0] = true; Q.push(start); BFS(); printf("%d ", dp[n - 1][n - 1]); }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
선생님, 질문이 있습니다.
안녕하세요, 선생님, 강의 잘 듣고 있습니다. 다음은 제 코드인데 작동 방식은 강의를 들은 토대로 작성을 해서 크게 대동소이 합니다. 그런데 계속 이 문제 뿐만아니라 dp 모든 문제들을 채점돌려보면 시간초과가 나고 있습니다.. 지금 소스코드와 비교를 해도 크게 다르지는 않은데 이유를 모르겠습니다. 혹시 제가 비쥬얼 스튜디오를 쓰고 있어서 #include<bits/stdc++.h>를 안써서 그런것인지..이거도 궁금하네요. 아 그리고 새해 복 많이 받으세요!! #include<stdio.h> #include<iostream> #include<vector> using namespace std; typedef struct block { int space; int height; int weight; }Block; int dy[101]; Block blocklist[101]; int n; int main() { cin >> n; for (int i = 1; i <= n; i++) { int s, h, w; cin >> s >> h >> w; blocklist[i].space = s; blocklist[i].height = h; blocklist[i].weight = w; } int ans = 0; dy[1] = blocklist[1].height; for (int i = 2; i <= n; i++) { int max = 0; //printf("\n\n<<현재 기준점 블럭의 정보 : %d %d %d >>\n\n", blocklist[i].space, blocklist[i].height, blocklist[i].weight); for (int j = i - 1; j > 0; j--) { if (blocklist[j].space > blocklist[i].space && blocklist[j].weight > blocklist[i].weight && max < dy[j]) { //printf("넓이 비교 %d > %d \n\n", blocklist[j].space, blocklist[i].space); //printf("무게 비교 %d > %d \n\n", blocklist[j].weight, blocklist[i].weight); max = dy[j]; //printf("현재 max값 : %d\n\n\n", max); } } max = max + blocklist[i].height; /*printf("새로 쌓을 수 있는 블럭의 높이 :%d\n\n", blocklist[i].height); printf("새로 갱신된 max값 : %d\n\n", max);*/ dy[i] = max; //이거 안해줘가지고 계속 안된거임. if (max > ans) { ans = max; } } cout << ans; }