it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비
it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비
수강정보
(38개의 수강평)
964명의 수강생
5개월 할부시
월 15,400원77,000원
지식공유자 : 김태원
113회 수업 · 총 24시간 54분 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 초급
PCU 프로필

res=res*10+(a[i]-48) PCU 17시간 전
안녕하세요 항상 강의 잘 듣고 있습니다. 6번 숫자만 추출 문제에서 res의 값을 구하기 위해서  res=res*10+(a[i]-48) 이라는 식을 이용했는데 이런 식을 구하기 위해서는 수학적인 방법이 있는 건가요?? 어떻게 이런 식을 생각하셨는지 궁금합니다.

1
김준우 프로필

d(1,2)가 두번 비교 한다고 하셧는데 d(1,1)에서 한번 d(2,2)에서 한번 이라는 뜻인가요?? 김준우 1일 전
궁금합니다.

1
박주한 프로필

cin으로 입력 받을 시 마지막 숫자가 안받아집니다. 박주한 7일 전
안녕하세요 ! 이 문제에서 입력을 cin으로 받아 a vector에 저장하는 코드를 짰는데 마지막 숫자가 안받아지는 에러가 납니다. 코드는 다음과 같습니다. int n, k,; cin >> n >> k; vector<int> a(n); for (int i=0; i<n; i++) {     cin >> a[i]; } 확인해보니 for문의 마지막바퀴에 들어가긴 들어가는데 cin이 안됩니다. 제 컴퓨터의 오류인가요 ..? 확인해주시면 감사하겠습니다.

1
박다미 프로필

65번 문제 질문이 있습니다. 박다미 8일 전
선생님의 강의를 보기 전, 아래와 같이 스스로 답을 작성해보았습니다. 첫번째 input case의 경우, 답이 1로 나와 오답이 나와버렸는데요, 아래에서 어떤 부분이 잘못됐는지 설명을 듣고싶습니다. #include <iostream> #include <vector> #include <algorithm> using namespace std; int arr[10][10], ans = 0, ny = 0, nx = 0; int my[4] = {1,0,-1,0}; int mx[4] = {0,1,0,-1}; bool check[10][10] = {false,}; bool track(int y, int x){ if(y<1||y>7||x<1||x>7||check[y][x]||arr[y][x]==1) return false; return true; } void dfs(int y, int x){ if(y==7&&x==7){ ans++; } else{ for(int i=0; i<4; i++){ ny = y+my[i]; nx = x+mx[i]; if(track(ny,nx)){ check[ny][nx] = true; dfs(ny,nx); check[ny][nx] = false; } else continue; } } } int main(void){ ios_base::sync_with_stdio(false); cin.tie(NULL); for(int i=1; i<=7; i++){ for(int j=1; j<=7; j++){ cin >> arr[i][j]; } } check[1][1] = true; dfs(1,1); cout << ans << "\n"; return 0; }

1
khb4435 프로필

5:37초에 khb4435 12일 전
소수 구하는 문제인데 j*j 이거 지금 약수의 개수 구하는 알고리즘 아닌가요..?

1
박주한 프로필

LIS 코드 오류 박주한 13일 전
안녕하세요 ! 수업을 듣다가 코드 오류를 발견한 것 같아 질문을 드립니다. LIS 코드를 짤 때 i=2 부터 도는 for문 안에서 res보다 dy[i]가 크면 res를 dy[i]로 바꿔주는 코드를 삽입했는데, 이렇게 할 경우 만약 n이 1이면 res를 0으로 초기화했기 때문에 답이 1이 되어야 하지만 0이 나오게 됩니다. 따라서 res를 1로 초기화를 하거나 n이 1일 때 예외처리를 해주는 코드를 작성해야 하는 것이 맞다고 생각합니다.

1
Eunyoung Roh 프로필

26번 : 병합정렬 스타일의 코드 Eunyoung Roh 13일 전
안녕하세요 선생님. 강의 잘 듣고 있습니다. 아래는 채점기에서 100점을 받은 제 정답 코드입니다. 병합 정렬 스타일의 코드는 이런 느낌일까요? #include <iostream> #include <deque> #include <vector> using namespace std; int main(int argc, char** argv) { // freopen("input.txt", "rt", stdin); // init int n; cin >> n; vector<int> arr(n); vector<int> res(n, 1); deque<int> mydeque; for(int i = 0; i < n; i++) cin >> arr[i]; // logic for(int i = 0; i < n; i++){ // 1. deque가 빈 경우 맨 앞에 삽입 if(mydeque.empty()) mydeque.push_front(arr[i]); // 2. deque의 맨 앞에 있는 원소보다 현재 값이 더 작은 경우 맨 앞에 삽입 else if(mydeque.front() >= arr[i]){ res[i] += mydeque.size(); // deque의 사이즈만큼 정답 배열에 더함 mydeque.push_front(arr[i]); } // 3. deque 안에서 알맞은 위치를 찾아감 else if(mydeque.back() >= arr[i]){ int cnt = 0; deque<int>::iterator it = mydeque.end(); it--; while(*it >= arr[i]) { it--; cnt++; } it = mydeque.insert(++it, arr[i]); // 현재 it에 1을 더해야 알맞은 위치 res[i] += cnt; } // 4. deque의 마지막 원소보다 현재 값이 더 큰 경우 맨 뒤에 삽입 else mydeque.push_back(arr[i]); } for(int i = 0; i < n; i++){ cout << res[i] << " "; } return 0; }

3
김영우 프로필

질문있습니다. 김영우 14일 전
1,2,4,5번 문제는 맞는데 왜 3번만 틀렸다고 할까요..? #include<stdio.h> int num[100001]; int main(){ int i, n, temp, cnt=0, max=-214700; //freopen("input.txt","rt", stdin); scanf("%d",&n); for(i=0; i<n; i++){ scanf("%d",&num[i]); } temp=num[0]; //배열의 첫번째요소를 임시로 넣음 for(i=0; i<n; i++){ if((num[i]-temp)>=0){ //이전의 요소와 뺄셈을 했을때 0보다 크거나 같으면 증가했다 취급함. cnt++; temp=num[i]; //다음반복을 위해서 현재요소를 임시값으로 지정 } else{ //이전의 요소와 비교했을때 값이 작으므로 감소했다 취급. if(max<cnt){ //증가가 끝났으니 max값 최신화 max=cnt; } cnt=1; temp=num[i]; //다음반복을 위해서 현재요소를 임시값으로 지정 } } printf("%d",max); return 0; }

1
백유라 프로필

왜 n+1개로 만든건지 모르겠어요! 백유라 18일 전
제목 그대로 질문입니다~

1
khb4435 프로필

오류... khb4435 19일 전
#include <stdio.h> using namespace std; int main() { char a[100]; int i, cnt = 0; scanf_s("%s", &a); for (i = 0; a[i] != '\0'; i++) { if (a[i] == '(') cnt++; else if (a[i] == ')') cnt--; if (cnt < 0) break; } if (cnt == 0) printf("yes\n"); else printf("no\n"); return 0; } 타이핑 똑같이 했는데요 출력결과...가 엔터눌러도 바로 안나옵니다 c언어로 코딩하면 가끔 이런일이 생기던데 해결방법 아시는지요? ++추가) 진~짜 알고리즘1도 모르고 머리가 좋다고 생각하는것도 아니지만..  맨날 하루에 하나라도 해서 완강하면 코테 볼 만큼 좀 좋아지겠죠?(희망의 답변을 듣기위해 한 질문입니다..ㅋㅋ)

1
노영석 프로필

dev c++ 작동오류 노영석 20일 전
dev c++로 코딩하는데  while(1) 이나 sizeof(..) 같은 문법이나 함수가 제대로 작동하지 않습니다. 같은 코드를 visual studio에서 돌리면 작동을 합니다. 컴파일러는 tmd-gcc 최신버전 사용하고 있습니다.이유가 무엇인지 궁금합니다. 또한 dev c++ 대신 visual studio를 사용해도 되는지요? (visual을 사용하면 체점받는 것은 어렵다는 것은 알고있습니다)

1
이창윤 프로필

생성자에 대한 질문입니다. 이창윤 22일 전
Data(int a, int b){ money = a; day = b; } 제가 생성자라는 것을 처음 봤는데 T.push_back(Data(a, b)); 여기서 생성자라는 것은 T에 input을 추가하기 위한 목적으로 생성했다고 이해하면 되는 걸까요??

1
이영준 프로필

dev c++ 이 제대로 실행이 안되요 이영준 22일 전
똑같이 따라했는데 실행을 하면 fail to execute 뜨면서 Error 0: 작업을 완료했습니다. 라고 뜨면서 콘솔창이 제대로 실행되지 않습니다.....

1
변지수 프로필

65번 문제 질문입니다. 변지수 22일 전
int n, k ,cnt = 0; int ch[10][10]; int map[10][10]; int dx[4] = {-1,1,0,0}; int dy[4] = {0,0,-1,1}; void DFS(int x, int y){ int i,xx,yy;// 이동할 격자 좌표  if(x == 7 && y ==7){ cnt++; } else { for(i = 0; i<4;i++){ xx = x+dx[i]; yy = y+dy[i]; if(xx<1 || xx>7 || yy>7 || yy<1 ) continue; if(map[xx][yy]==0){ map[xx][yy] = 1; DFS(xx,yy); map[xx][yy] = 0; } } } } int main(){ freopen("input.txt", "rt",stdin); //rt read txt int i,c,b,j; for(i = 1; i<=7;i++){ for(j= 1; j<=7;j++){ scanf("%d", &map[i][j]); } } ch[1][1]=1; DFS(1,1); printf("%d",cnt); return 0; }  궁금한게 생겨서 질문드립니다.  map에서 지나가는 길에 1을 넣으면서 가고 돌아올때 0을 넣으면서 돌아오면 될것같아서 위처럼 구현했는데 8이아니라 16이 나오더라구요 왜 그런지 알 수 있을가요? 제가 무엇을 놓친걸까요.. 

1
Sukwon Oh 프로필

문제의 조건에 대해 Sukwon Oh 23일 전
좋은 강의 정말 감사합니다. 문제의 조건에 대해 문득 생각이 들어서 질문 드립니다. 조건 2에서 밑면의 넓이가 같은 벽돌도 없고 또 무게가 같은 벽돌도 없다고 하셨는데, 만약 이것을 허용하면 문제가 많이 어려워 지나요? 제 생각으로는 그냥 < 로 비교하는 것을 <= 로 하면 될 것 같은데 혹시나 해서 질문 드립니다.

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스