월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요 질문드립니다.!
제가 작성한 코드에서 계속 wrong_answer가 나와 강의를 보고 코드를 수정해서 작성했습니다. 테스트를 했는데 전체적으로 너무 작은 값이 나옵니다. 제가 놓치고 있는 부분이 있는 지 확인 부탁드립니다.! 감사합니다! #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int i,j,h,w,sum=0,max=0,gh,gw,k,q; scanf("%d %d",&h,&w); vector<vector<int> > a(h+1,vector<int>(w+1,0)); for(i=1;i<=h;i++){ for(j=1;j<=w;j++){ scanf("%d",&a[i][j]); } } scanf("%d %d",&gh,&gw); for(i=1;i<=h-gh+1;i++){ for(j=1;j<=w-gw+1;j++){ sum=0; for(k=i;k<i+gh;k++){ for(q=j;q<j+gh;q++){ sum=sum+a[k][q]; } } if(max<sum)max=sum; } } printf("%d",max); return 0; }
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
팩토리얼을 보고 습관적으로 재귀형태로 만들었는데 상관 없을까요?
#include <stdio.h> #include <vector> #include <algorithm> using namespace std; int func(vector<int> &v, int n){ int tmp=n; if(n>1){ func(v, n-1); //then divide n int i=2; while((i<=tmp)&&(tmp>1)){ if(tmp%i==0){ v[i]++; tmp=tmp/i; }else{ i+=1; } } } return 0; } int main(){ //freopen("input.txt","rt", stdin); int n, i; scanf("%d",&n); vector<int> v(n+1); func(v, n); printf("%d! = ",n); for(i=2; i<=n; i++){ if(v[i]!=0) printf("%d ", v[i]); } return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
vector 함수를 매개변수로 보낼 때
#include <iostream> #include <vector> #include <algorithm> #include <cmath> #include <stack> using namespace std; int n, a[11], total=0; void DFS(int L, int sum, vector<int> in){ if(L == n+1){ } else{ } } int main() { int total=0; cin>>n; vector <int> in(n); for(int i =0; i<n; i++){ cin>>in[i]; total+=in[i]; } DFS(1,0,in); /*여기서 만약 in을 매개변수로 보낸다면 DFS(1,0,in); 으로 보내고 void DFS(int L, int sum, vector<int> in)으로 받을 시 정상적으로 작동하는데 이 때 main함수의 vector<int> in의 주소가 아닌 값만 복사해서 보내는 것 같습니다. DFS함수에서 값을 바꾸면 main에서도 바뀔 수 있도록 하려면 매개변수를 어떻게 해야하나요? */ return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
cin/cout이 더 낫지 않을까요
c++로 통일하는게 낫다고 봅니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
질문있습니다.
int digit(int x){ int sum=0, tmp; while(x>0){ tmp=x%10; sum=sum+tmp; x=x/10; } return sum; } 질문있습니다 digit 함수 부분에서 int sum=0; 이라고 선언이 되어 있는데 "=0;" 부분을 빼고 int sum; 이렇게 선언하면 제대로된 값이 나오지 않더라구요. 왜 그러는지 알고 싶습니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
26번 질문입니다.
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int n, cnt; scanf("%d", &n); vector<int> a(n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 0; i < n; i++) { cnt = i + 1; for (int j = 0; j < i; j++) { if (a[i] > a[j]) cnt--; } printf("%d ", cnt); } } 선생님 저는 이렇게 풀었는데 O(n2) 알고리즘인데 4,5번에서 time_limit이 납니다. 컴퓨터 때문인가해서 질문드립니다.
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
iostream
안녕하세요, 좋은 강의 감사합니다. cin, cout 형태를 안쓰시는 이유가 따로 있으신가요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
25번 문제 질문 있습니다.
채점 결과 시간초과로 0점입니다. 어떻게 해결해야 시간초과가 나오지 않을까요?
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
case2에서만 wrong answer가 뜹니다
다른 케이스에선 전부 success가 뜨는데 2에서만 틀린이유가 무엇일까요?ㅠ 강의에 나온 코드와 비교해 보아도 딱히 틀린게 없어보입니다. #include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; int main() { int h,w,hh,hw,sum,max=-2147000000; cin>>h>>w; vector <vector <int> > tree (h, vector <int> (w)); for(int i =0; i<h; i++){ for(int j = 0; j<w; j++){ cin>>tree[i][j]; } } cin>>hh>>hw; for(int i = 0; i<h-hh; i++){ for(int j = 0; j<w-hw; j++){ sum = 0; for(int x = i; x<i+hh; x++){ for(int y = j; y<j+hw; y++){ sum+=tree[x][y]; } } if(max<sum){ max = sum; } } } cout<<max; return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
공부 로드맵에 대해 질문드립니다.
안녕하세요 선생님 좋은 강의 덕분에 많이 도움 받았습니다. 다름이 아니라 인프런 강의와 추가 문제들 (DFS, BFS, 시뮬레이션 등 기타문제)까지 백준에서 모두 풀어봤는데 이 다음으로는 로드맵이 없더라구요 ..ㅠㅠ 이 다음에는 어떻게 공부를 해야 효율적으로 코딩테스트 준비를 할 수 있는지 질문하고싶습니다!!
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요 채점에 대해 질문드립니다!!
선생님과 비슷하게 코드를 짜서 콘솔로 in1 같은 경우 f11를 눌러 직접 입력하여 테스트를 해봤는데 out1과 동일하게 답이 나옵니다. 그러나 채점기로 돌려보면 Wrong_answer로 뜹니다! 혹시 제가 놓치는 부분이 있을까요?? 확인 부탁드립니다! #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int i,j,cnt,n; scanf("%d",&n); vector<int> a(n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } printf("1"); for(i=1;i<n;i++){ cnt=0; for(j=i;j>=0;j--){ if(a[j]>=a[i])cnt++; } printf(" %d",cnt); } return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
16번 질문
안녕하세요. c언어 기본적인 문법만 아는 상태여서 algorithm이라는 라이브러리를 처음 봤는데요. 강의에서 exit()을 사용하기 위해서 algorithm을 꼭 include 해야한다고 하셨는데 algorithm 라이브러리가 궁금해서 찾아봤습니다. 그런데 algorithm에는 exit()이 없고 stdlib.h에 있다는 것을 알게 되었습니다. stdlib.h를 인클루드 해도 exit()을 사용할 수 있는데 특별히 algorithm을 인클루드하는 이유가 있는지 궁금합니다! 감사합니다. exit [ˈeksɪt;ˈeɡzɪt] Eng1.exit[명사] (공공건물차량의) 출구 참조 entrance2.exit1[명사] (공공건물의) 출구 ((건물의 출구 표시는 보통 Exit, Way Out임))(opp. entrance)3.exit2[자동사] [연극] 퇴장하다(opp. enter; cf. EXEUNT)4.exit 웹수집: 지식백과, 전문정보, 뉴스 등의 웹 페이지에서 수집한 영어 단어입니다. 출현 횟수: 웹 페이지에서 특정 뜻으로 언급된 횟수입니다.투자금 회수5.-exit[명사] 탈퇴 국가((Brexit(브렉시트)나 Frexit(프렉시트)처럼 나라 혹은 주의 이름에 붙는 접미사로 어떤 연합에서 탈퇴하는 것을 지칭할 때 사용))6.출구 出口exit, (Brit) way out7.출입구 出入口entrance, entry(way), exit8.퇴장 退場(무대에서) [동사] exit, leave the stage, make one's exit9.X-it[명사] (美속어) EXIT.10.나가는 곳(안내지시문) Exit {"mean":["exit<br/><br/>[명사]\n\t\t \t\t(공공건물차량의) 출구\n\n\t\t 참조 entrance","exit1<br/><br/>[명사]\n\t\t \t\t(공공건물의) 출구 ((건물의 출구 표시는 보통 Exit, Way Out임))(opp. entrance)","exit2<br/><br/>[자동사]\n\t\t \t\t[연극] 퇴장하다(opp. enter; cf. EXEUNT)","exit\n \t\t\t\n\t \t\n\t \t\t\n\t\t\t \t\n\t \t\t\t\n\t\t\t \t\t\n\t\t\t\t\t\t \t웹수집: 지식백과, 전문정보, 뉴스 등의 웹 페이지에서 수집한 영어 단어입니다.\n\t\t\t\t\t\t\t\t\t출현 횟수: 웹 페이지에서 특정 뜻으로 언급된 횟수입니다.<br/><br/>투자금 회수","-exit<br/><br/>[명사]\n\t\t \t\t탈퇴 국가((Brexit(브렉시트)나 Frexit(프렉시트)처럼 나라 혹은 주의 이름에 붙는 접미사로 어떤 연합에서 탈퇴하는 것을 지칭할 때 사용))","출구\n \t\t\t出口<br/><br/>exit, (Brit) way out","출입구\n \t\t\t出入口<br/><br/>entrance, entry(way), exit","퇴장\n \t\t\t退場<br/><br/>(무대에서) [동사] exit, leave the stage, make one's exit","X-it<br/><br/>[명사]\n\t\t (美속어)\n\t\t \t\tEXIT.","나가는 곳<br/><br/>(안내지시문) Exit"],"word":"\n\t\t\t\t\t\texit\n \t\t\t\n\t \t\n\t ","soundUrl":"https://dict-dn.pstatic.net/v?_lsu_sa_=3ad8075e5dce3cd6e798511535d490f57dbe6a35590aaf056ae20d73bb5e6cf19156d77c6765fe7cc9f566157825906477d67cdc6021f1dfc84c483f22d9d0397a60742ce23743a398b386e8e14b5de8b25fdedab1e9723f7cd0cdc13a7fab3974bb4e8fcb920171c0ba508cedc8cac620c98577816625ab66ca2624fe38d73a","phoneticSymbol":"[ˈeksɪt;ˈeɡzɪt]"}
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
채점시 시간초과 오류 관련
#include <iostream> #include <vector> using namespace std; int main(int argc, char** argv) { int i,j,S,N,Data,tmp,ind; cin>>S; cin>>N; vector<int> v(S); for(i=0;i<N;i++){ cin>>Data; ind=N; for(j=0;j<S;j++){ if(v[j]==Data){ ind=j; break; } } if(ind!=N){ for(j=ind;j>0;j--){ v[j]=v[j-1]; } } else{ for(j=N-1;j>0;j--){ v[j]=v[j-1]; } } v[0]=Data; } for(j=0;j<S;j++){ cout<<v[j]<<" "; } return 0; } 선생님, 안녕하세요. C++로 작성한 다음 코드를 돌렸을 경우, 답은 잘 나오는 것 같은데 시간 초과가 뜹니다. 원인을 알 수 있을까요?
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
Compiler 차이에 따른 디버깅차이
수업 잘듣고 있습니다. 다름이 아니라 86번문제를 강좌듣기전에 풀어보았습니다. 아래의 코드를 visual스튜디오에서 돌리면 정답까지 잘 출력하는데, 수업 컴파일러인 dev c++에서는 f9를 누르자마자 아래 사진처럼 에러가 납니다. visual 스튜디오에서만 돌아가는게 찝찝합니다. 만약 코딩테스트 칠때에도 dev c++과 비슷한 컴파일러일까봐 두렵습니다. 어떤점이 dev c++에 에러를 뜨게 하는건가요? #include<iostream> #include<string> #include<vector> #include<stack> #include<algorithm> #include<queue> using namespace std; int n, m, answer = 2147000000; int ch[13]; int road[51][51]; vector<pair<int, int> > pizza, house; int distance(const pair<int, int>& a, const pair<int, int>& b) { return abs(a.first - b.first) + abs(a.second - b.second); } void DFS(int idx, int cnt) { int dis; if (cnt == m) { int sum = 0; for (int i = 0; i < house.size(); i++) { dis = 2147000000; for (int j = 0; j < pizza.size(); j++) { if (ch[j] == 1) { dis = min(dis, distance(house[i], pizza[j])); } } sum += dis; } if (answer > sum) answer = sum; return; } else if (idx == pizza.size()) { return; } else { ch[idx] = 1; DFS(idx + 1, cnt + 1); ch[idx] = 0; DFS(idx + 1, cnt); } } int main() { cin >> n >> m; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> road[i][j]; if (road[i][j] == 2) { pizza.push_back(make_pair(i, j)); } else if (road[i][j] == 1) { house.push_back(make_pair(i, j)); } } } DFS(0, 0); cout << answer; return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
47번 질문입니다.
선생님 전역변수 대신에 vector를 이용해서 풀어보려고 하는데 vector를 2차원으로 선언하는걸 찾아봤는데 vector에 대한 개념이 없어서 그런지 이해가 잘 안갑니다.. vector <int> a(5)로 해서 일차원 백터 사용하는법 알려주신것처럼 2차원 백터도 어떻게 사용하는지 간단하게 알려주시면 안될까요?
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
9번문제
#include <stdio.h> int main(){ int num[50002]; int N; scanf("%d",&N); for(int i = 1; i<=N ; i++){ for(int j = i; j<=N ; j+=i){ num[j]++; } } for(int i = 1; i<=N; i++){ printf("%d ",num[i]); } } 전역변수 말고 지역변수로 설정하면 값의 출력이 어느 순간부터 이상해지는데 이유가 뭘까요?
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
54번 스택 관련 궁금증이 있습니다.
안녕하세요 스택 관련 궁금증이 있습니다. NO일때 break 대신에 곧바로 return 하면 flag 변수를 사용하지 않아도 같은 결과가 나오는것 같습니다 new로 할당하고 delete 하지 않으면 메모리에 남아있는 것처럼 스택도 들어있는 값들을 모두 pop하지 않으면 문제가 발생하거나 안좋을까요...?? int main() { //freopen("input.txt", "rt", stdin); stack<char> s; char a[50]; int i; scanf("%s", &a); for (i = 0; a[i] != '\0'; i++) { if (a[i] == '(') { s.push(a[i]); } else { if (s.empty()) { printf("NO\n"); return 0; } else s.pop(); } } if (s.empty()) printf("YES\n"); else printf("NO\n"); return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
19번) 동적할당으로 배열 선언시 시간초과 질문
#include <iostream> using namespace std; int main(void){ int N,i,j,ct=0; cin>>N; int height[N]; for(i=0;i<N;i++) //한 줄의 정보를 입력받음 cin>>height[i]; for(i=0;i<N-1;i++){ //분노 유발자 수를 탐색 for(j=i+1;j<N;j++){ if(height[i]<=height[j]) //뒤의 학생이 더 큰 경우 분노유발자가 아님 break; } if(j==N) ct++; //뒤의 모든 학생보다 키가 큰 경우 분노유발자 } cout<<ct; return 0; } 안녕하세요 19번을 해결하던 중에 질문이 있어서 글을 올리게 되었습니다. 제가 최종적으로 100점을 맞은 코드는 위와 같습니다. 하지만 원래 height 배열을 포인터 변수로 선언하였고, new를 사용한 동적할당으로 문제를 해결하려 했지만, 시간 초과로 인해 0점이 나옵니다. 아래 코드가 0점 코드인데 무엇이 문제인지 설명 부탁드려도 될까요? #include <iostream> using namespace std; int main(void){ int N,i,j,ct=0; int *height; cin>>N; height=new int(N); for(i=0;i<N;i++) //한 줄의 정보를 입력받음 cin>>height[i]; for(i=0;i<N-1;i++){ //분노 유발자 수를 탐색 for(j=i+1;j<N;j++){ if(height[i]<=height[j]) //뒤의 학생이 더 큰 경우 분노유발자가 아님 break; } if(j==N) ct++; //뒤의 모든 학생보다 키가 큰 경우 분노유발자 } cout<<ct; delete height; return 0; }
- 미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
9번 문제 다른 풀이방식 질문입니다!
안녕하세요 9번 문제를 혼자서 해결하다 선생님께서 풀이하신 방법과 다르지만 채점결과 100점이 나와서 질문 드립니다. 우선 제가 작성한 코드는 위와 같습니다. 모든 수는 최소 1과 자신을 약수로 갖기 때문에 초기 약수 개수를 2로 두었습니다. 약수는 대칭성이 있다고 판단했으며, 대칭이 되는 기준이 개수를 구하려는 수에 루트를 씌운 값이라고 생각해서 1을 제외한 기준 전까지 구한 약수의 개수를 2 곱해서 더하고, 기준값이 정수인 경우 1을 더해서 약수의 개수를 최종적으로 구했습니다. 제가 작성한 방식으로 한다면, 시간복잡도가 nlogn이 나와서 더욱 효율적이지 않나 궁금해서 질문드리게 되었습니다. 답변해주시면 감사하겠습니다!
- 해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
46번) 벡터로 배열생성시 시간초과 문제
강의처럼 전역변수로 배열 a[2001]로 선언하면 시간초과문제가 생기지 않습니다. 그런데 변수선언을 벡터로 했더니 4,5번 케이스에서 시간초과 문제가 발생했습니다. Q1. 제가 코테를 시작한지 얼마 안되서... 혹시 일반적인 프로그래밍 말고 코딩테스트를 보는 경우, 메모리 절약보다는 실행시간을 고려하는게 더 중요한가요?? Q2. 변수선언 방법에는, a[2001]처럼 크게 잡는 것과 new로 동적할당하는 것과 vector를 쓰는 것 . 이렇게 3가지 정도 알고 있습니다. 이 중에서 상황에 따라 어떤 방식을 선택하는 지 등의 기준(?)이 있을까요?