inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

교안 속의 조합의 시간복잡도에 대한 질문

296

RokiePlayer

작성한 질문수 10

0

 

안녕하세요.

 제가 어제 코테를 칠 일이 있어서 문제를 풀었는데

정말 운이 좋게 14502 연구소 문제에서 사용한 중복조합으로 풀 수 있었습니다. 

 

nH3 정도의 문제여서 바로 저번 문제에서 본 대로 3중 루프문을 사용했습니다.

근데 돌아오고 보니 그냥 교안에 있던 조합 재귀 함수를 만들어서도 풀 수 있었습니다.

 

그래서 여기서 질문인 게 같은 조건이면 어느 쪽이 시간복잡도 측면에서 유리한 건가요?

결국 해야 할 연산의 양이 똑같을 거 같습니다. 

코테 준비 같이 해요! C++

답변 1

0

큰돌

안녕하세요. RokiePlayer님 ㅎㅎ 

코테 잘보셨나요? 여기서 추천한 문제유형이 나와서 저도 정말 기분이 좋네요.ㅎㅎ

 

nH3 정도의 문제여서 바로 저번 문제에서 본 대로 3중 루프문을 사용했습니다.

 >> 3중루프문을 써서 중복조합말고 조합을 하시는 것을 추천드립니다. 

for i = 0 ~ n

  for j = 0 ~ n 

이런식으로 푸신 것 같은데

for i = 0 ~ n 

  for j = i + 1 ~ n

이런식으로 푸시면 "중복조합" 아닌 "조합"이 되는 것이죠.

 

근데 돌아오고 보니 그냥 교안에 있던 조합 재귀 함수를 만들어서도 풀 수 있었습니다.

그래서 여기서 질문인 게 같은 조건이면 어느 쪽이 시간복잡도 측면에서 유리한 건가요?

결국 해야 할 연산의 양이 똑같을 거 같습니다. 

 >> 연산의 양은 똑같습니다. 재귀함수도, 반복문을 통해서 하든 똑같은 "조합"이라면요. 하지만 시간은 반복문이 훨씬 빠릅니다. 물론 문제마다 다른 부분이 있겠지만 보통은 반복문이 빠릅니다. 왜냐면 재귀함수를 만든다고 했을 때 "함수를 반복해서 만드는 비용"이 발생하기 때문이죠.

 

또 질문사항있으시면 언제든 말씀 부탁드립니다. 

감사합니다. 

강사 큰돌 올림. 

0

RokiePlayer

문제가 각 코인이 3개씩 있는데 모든 코인들 중에서 3개 선택하는 거였습니다.

그래서 중복조합으로 풀긴 했어야 합니다.

1-E질문입니다!

0

529

2

3-L 틀린 부분 피드백 부탁드립니다.

0

833

2

1-A문제 순열재귀함수 질문입니다.

0

396

1

1-A 일곱난쟁이문제입니다

0

465

1

문제 풀 때 방향성에 대해

0

808

1

맥에서 vs code로 실행 관련 질문입니다

0

528

1

17071번 메모리 초과

0

388

1

1-C질문입니다!

0

427

2

2-B BFS 시간초과질문

0

636

2

1-O 13번 라인

0

445

1

6-J 놀이공원 문제 질문

0

386

1

구현관련 질문

0

487

1

강의 교안

0

321

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

549

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

538

1

1-K

0

481

2

3-G번 질문있습니다.

1

478

3

3-C 실행 시간 질문드립니다.

0

500

1

4-A 문제 풀이 질문있습니다.

0

598

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

441

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

344

1

3-O go 함수 질문 드립니다.

1

450

2

4-A 출력 질문

0

306

1

1주차 1-O 질문드립니다

0

262

1