인프런 업데이트 소식 🔨👷🏼‍♂️
it 취업을 위한 알고리즘 입문 (with C++) : 창의적 문제해결

it 취업을 위한 알고리즘 입문 (with C++) : 창의적 문제해결

(7개의 수강평)

157명의 수강생

77,000원

평생
초급
수료증
100회 수업, 총 19시간 10분
위시리스트 추가
Cherry Blossom with Sun 프로필

19번 분노유발자 질문입니다 Cherry Blossom with Sun 1일 전

저는 앞의 학생을 기준으로 뒤에 모든 학생을 검사해서

더 큰 학생이 있으면 세지 않는 방식으로 했는데 어디서 

잘못된 부분인지 모르겠어서 질문드립니다 ㅠㅠ 

간단한 개념이라 될 줄 알았는데 왜인지 이런 방식으로 답이 안나오네요 ㅠㅠ 

1
주태종 프로필

STL은 언제쯤??? 주태종 16일 전

아직 완강은 하지 않은 상태지만,

시험 준비하는 입장에서 너무 좋은 강좌입니다.

뭔가 하나씩 알아가고, 실력이 늘고 있다는 기분도 듭니다.

강의 중간 부쯔음 STL 강의도 찍으실 예정이라고 하셨는데,  C++ STL 알고리즘 강좌는 언제쯤 계획 중이신지 궁금합니다.

1
이창진 프로필

그냥 문자열을 크기대로 배열해서 이창진 17일 전

내림차순으로 정리한다음에 두 문장을 하나씩 비교해서 두 문자열에서 다른 부분이 나오면 틀리게 구현해봤습니다.

 

채점할때는 그냥 만점 나와서 넘기긴 했는데, 이런 식으로 얌체로 생각하면 실력이 안늘까요?? 

1
DH 프로필

86번 피자배달거리 DH 27일 전

안녕하세요, 선생님

항상 좋은 강의 감사합니다.

1) 86번 질문

다름이 아니라 86번 문제에서 아무리 보아도 ch의 역할이 이해가 안갑니다.

DFS 함수 내부에 2중 포문으로 들어간

for (int j = 0; j < m; j++) {

int x2 = pz[ch[j]].first;

int y2 = pz[ch[j]].second;

이 부분이 특히 이해가 안갑니다..

int x2 = pz[j].first;

int y2 = pz[j].second;

 

가 아니라 ch[j] 가 필요한 이유가 무엇이죠,,?

체크 배열인건 알겠는데 무엇을 체크하기 위한 것인지 모르겠습니다.

어떤 것을 가리키는 인덱스 번호인지도요 ㅠㅠ

 

2) 그 외

현재 완강을 달려갑니다.

그런데도 새로운 DFS/BFS문제 및 다른 문제를 만나면 아예 풀지를 못하고 있습니다.

취업대비 코딩테스트 준비중인데 어떻게 해야할지 감이 안섭니다..코딩테스트까지는 2달 남았습니다.

시간상 하루 2문제씩 해당 강의 문제를 복습하고, 나머지 1문제는 새로운 문제를 푸는식으로 하루 3문제 정도 풀려고 하는데 괜찮은 계획인지 여쭤봅니다.

2
blizzarduser 프로필

32번 선택정렬 질문입니다. blizzarduser 27일 전

//32번 

#include<stdio.h>

#include<vector>

#include<algorithm>

using namespace std;

 

int main()

{

int n;

int tmp;

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++) {

for(int j=i+1;j<n;j++) {

if(a[i]>a[j]) {

tmp=a[i];

a[i]=a[j];

a[j]=tmp;

}

}

}

 

for(int i=0;i<n;i++) {

printf("%d ",a[i]);

}

 

제가 이런식으로 짰는데요 정렬은 잘되지만

선생님과 코드가 달라서요

제가 짠것은 버블정렬인가요?

1
선캄 프로필

26번 마라톤 질문입니다. 선캄 1달 전

올려주신 소스코드를 그대로 빌드해서 채점기에 넣을경우 4,5번이 시간초과가 뜹니다. 2중포문이라 뜨는거같은데 채점기를 수정해야 할것같습니다.

 

- 디버그모드로 빌드를 해서 그런가봅니다. 릴리즈로 다시 빌드후 테스트하니까 통과하네요!

 

강의에서는 머지소트를 이용한 방법을 따로 올려주신다고 했는데 올라와있는게 있나요?

1
우리 심바 c++ 마스터  프로필

질문있습니다. 우리 심바 c++ 마스터 1달 전

bool operator<( Edge &b){

    return val > b.val;

}

이렇게 작성하면 priority_queue에서는 최소 힙으로 된다고 하셨는데요.

 

sort( ~.begin(), end())는 큰 순서대로 내림차순으로 배열되던데요. 

 

혹시, 이해하기 쉬운 방법이 있을까요?

제 기준에는 완전히 서로 반대로 정렬이 되어버리는 것 같습니다. 

 

항상 쉽게 설명해주셔서 감사드립니다! 

2
슘 프로필

41번 질문드립니다 1달 전

15 연속된 합 예를 들어주셨을때, 

7+8, 4+5+6 두가지 케이스에 대해선 설명해주셔서 이해를 했는데,

1+2+3+4+5 같은 케이스가 코드에서 어떻게 출력되는지 이해가 안가서 질문 드립니다!

 

위의 같은 경우 a가 (5-5)0이 되어서

while(a>0) 문 조차 들어가지 못하는데 어떻게 출력되는지 궁금합니다.

1
blizzarduser 프로필

19번 문제 질문입니다. blizzarduser 1달 전

#include <stdio.h>

 

int main()

{

int a[105]={0,};

int n,t,j;

 

int num;

int sum=0;

scanf("%d",&n);

 

for(int i=1;i<=n;++i) {

scanf("%d",&a[i]);

}

for(int i=1;a[i]!=0;++i) {

for(j=i+1;a[j]!=0;++j) {

if(a[i]<=a[j])

break;

if(a[j+1]==0) {

sum++;

}

}

}

printf("%d",sum);

}

선생님 19번문제를 이렇게 풀면 채점결과 통과는합니다.

하지만 시간을 효율적으로 더 줄이기위해서

a[i]가 a[j]보다 작아서 break 되는순간

a[i]를 ++i를 이용하지않고 바로 a[j]부터 시작해서

비교를 하려는 생각을 해봤습니다.

55 34 46 89가 있으면 55가 89에 걸리는순간

89부터 검사를 하려구요

그래서 이렇게 다시 짜봤습니다.

#include <stdio.h>

 

int main()

{

int a[105]={0,};

int n,t,j;

 

int num;

int sum=0;

scanf("%d",&n);

 

for(int i=1;i<=n;++i) {

scanf("%d",&a[i]);

}

for(int i=1;a[i]!=0;++i) {

for(j=i+1;a[j]!=0;++j) {

if(a[i]<=a[j]) {

                               i=j;

break;

                     }

if(a[j+1]==0) {

sum++;

}

}

}

printf("%d",sum);

}

i=j를 넣는방식으로 짰는데 이러면

어떤건 통과하고 어떤건 통과가안되더라구요

그 이유가 뭔가요??

2
blizzarduser 프로필

제 코드 어떤부분을 수정하면 되는걸까요? blizzarduser 1달 전

16번문제 인데요

5번만 통과가안되더라구요

 

int main()

{

//freopen("input.txt", "rt", stdin);

char a[100];

char b[100];

 

int i, j=0;

int sum;

char tmp;

scanf("%s%s", a, b);

 

for (i = 0; a[i] != '\0'; ++i) {

for (j=0; b[j] != '\0'; ++j) {

if (a[i] == b[j]) {

tmp = b[i];

b[i] = b[j];

b[j] = tmp;

}

}

}

 

sum = strcmp(a, b);

 

 

if (sum == 0)

printf("YES");

else

printf("NO");

 

 

}

 

이런식으로 정렬해서 b배열을 a배열처럼 같게만들어서

비교하는거였는데 시간이 오래걸려서 에러가뜨는건가요??..

 

비쥬얼스튜디오에서는

stack 'a' corrupted ~~라고 나오는데 이거 너무 오래걸려서 에러나는건가요??

 

dev에서는 NO라고나오네요 비쥬얼은 YES라고 나오는데 에러뜨구요

 

어떤점이 잘못된건가요? 선생님이 알려주신 답변은 이해했는데 제 코드에서 수정하는거로는 성공시킬수없나요? 버블정렬n2이라서 그런건가요???

1
chilllout2410@gmail.com 프로필

단순한 질문이지만.. chilllout2410@gmail.com 1달 전

안녕하세요. cpp, 알고리즘 모두 처음 접하지만 좋은 강의 잘 듣고있습니다.

2 line에 int cnt[50001];을 main함수 안에 안하고 밖에다가 선언하는 이유를 알 수 있을까요?

 

감사합니다.

1
chilllout2410@gmail.com 프로필

gets()의 매개변수에 대한 질문 chilllout2410@gmail.com 1달 전

안녕하세요. 소스코드에서 line 7에 gets(a)가 있는데요. gets(&a)는 틀린걸까요?

1
blizzarduser 프로필

9번 모두의 약수 코드와 처음에 알려주신 반복문 코드 차이가 무엇인가요? blizzarduser 1달 전

9번

#include <iostream>

 

using namespace std;

 

int main(void)

{

   int num,i,j=1;

   int sum;

   scanf("%d",&num);

   

   if(num>=5 && num <=50000) 

      for(i=1;i<=num;++i) {

      sum=0;

      for(j=1;j<=i;++j) {

      

         if(i%j==0)

            sum++;

      }

      printf("%d ",sum);

      

   }

 

}

 

 

}이런식으로 코딩하면 n제곱이라고 알려주셨는데 반복문이 2개써서 n의 제곱인가요?? 선생님이 알려주신 시간이 더 적게 드는 방법도 반복문이 2개인데 이것의 시간복잡도를 구하는 방법은 없는건가요? 어떻게해서 nlog n보다는 덜 하다는 걸 구하셧는지 소스를 보고 시간복잡도를 대략적으로 구하는 방법이 궁금합니다!

3
엄정빈 프로필

제곱근 까지만 돌려도된다라는 말이 이해가 잘 안됩니다. 엄정빈 1달 전

36을 예로 들어주셨는데 1부터 6까지 확인한건 알겠습니다. 그런데 왜 두번째 for문에서 j를 j*j로 바꾸는건지 잘 모르겠습니다.

1
blizzarduser 프로필

visual studio에서 freopen은 어떻게 사용하나요? blizzarduser 1달 전

Dev파일이 아닌 visual 같은경우는 프로젝트 안에 어디로 추가해야되나요?? 

2