inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

3-A

3-A combi 메소드 시작 인덱스에 따른 시간초과 이유

해결된 질문

253

jwnnoh

작성한 질문수 2

0

안녕하세요 큰돌님! 다름이 아니라, combi 메소드를 생성할 때,

for (int i = start; i < chicken.size(); i++) {
    arrayList.add(i);
    combi(i);
    arrayList.remove(arrayList.size() - 1);
}

이 부분에서 starting index를 0으로 하면 시간초과가 나는 반면,

starting index를 -1로 설정한 후

for (int i = start + 1; i < chicken.size(); i++)
{/*...*/}

이런 식으로 작성하면 문제없이 통과됩니다. -1에서부터 인덱스를 시작하면 combi 메소드를 호출하는 횟수가 0에서 시작하는 것보다 상당한 차이로 줄어드는데 혹시 그러한 이유를 알 수 있을까요..?

혹시 combi 내에서 호출할 때에 for문에서 int i의 시작점이 변화 없이 그대로 진행되기 때문일까요.. 감사합니다!

 

c++ 코딩-테스트

답변 1

1

큰돌

안녕하세요 ㅎㅎ

for (int i = start; i < chicken.size(); i++) {
    arrayList.add(i);
    combi(i);
    arrayList.remove(arrayList.size() - 1);
}

이렇게 하게 되면

combi(0) -> combi(0) -> combi(0)

이런식으로 중복된 경우의 수가 생겨버리게 됩니다.

start부터 시작하게 되니까요.

 

그래서 그런 것 같습니다. ㅎㅎ

 

혹시 combi 내에서 호출할 때에 for문에서 int i의 시작점이 변화 없이 그대로 진행되기 때문일까요.. 감사합니다!

>> 네 맞습니다. ㅎㅎ

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


 

4 - A

0

17

2

코딩살구클럽 입장이 안됩니다

0

54

2

4-F 경우의 수 질문입니다.

0

30

2

코딩살구클럽 가입이 안됩니다.

0

65

2

살구 클럽에 대한 질문있습ㄴ디ㅏ

0

54

1

교안 158페이지 문의드립니다

0

44

2

코딩살구클럽 관련 건의사항

0

110

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

44

1

진행 방법 질문드립니다!

0

79

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

63

2

2주차 개념#12 트리 순회

0

32

2

백준사이트가 종료된다고 합니다.

0

312

2

백준 서비스 종료

9

944

1

sk 하이닉스 코테 대비

0

383

2

3-G 최댓값 질문

0

54

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

84

2

3-I 코드 질문드립니다.

0

63

2

3-N 질문 있습니다.

0

68

2

학습방법

0

105

2

4-H 질문 있습니다 (코드 리뷰)

0

68

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

180

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

71

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

65

2

1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.

0

53

2