인프런 커뮤니티 질문&답변

수범님의 프로필 이미지
수범

작성한 질문수

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

1-J

1-J 질문

작성

·

289

0

안녕하세요 큰돌님.

우선 덕분에 한문제씩 풀면서 많은 발전이 있는 것 같습니다.

알고리즘 문제 풀면서 생긴 의문이 있는데요.

1-J번의 경우에 저는 처음에 Combi를 사용하여 풀이를 하였는데 Combi를 사용할 경우 시간복잡도가 높아 시간초과가 나왔습니다.

대략적으로 2의 30제곱(의상 수 조합) X 100(케이스)

(테스트케이스 : 최대 100, 의상 수 : 최대 30)

 

시간초과 하지 않기 위해 다른 알고리즘을 써야한다는 이야기인데, 이때 시간복잡도가 어느정도까지 나오면 테스트 통과할 수 있는지 알 수 있을까요?

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 수범님 ㅎㅎ

사실 복잡도의 상한선은 문제마다 다릅니다.

어떤 문제는 시간초과를 이쯤하면 주고 어떤 문제는 또 이쯤하면 안주게 설정할 수 있거든요.

그래서.

대략적으로 잡는게 중요합니다.

보통 1000만, 1억짜리 시간복잡도는 안된다고 생각하고 들어가시는게 좋습니다.

다만, 이렇게 생각을 하는거죠.

지금 내가 생각하기에 이 ~~ 한 알고리즘으로만 이 문제를 풀 수 있을 거 같은데

시간초과 날 거 같네 한.. 3000만 정도 되는 알고리즘인데?

아 근데 아무리 생각해도 "더 효율적인"거는 없는 거 같아

라고 하시면 그 알고리즘으로 들어가는게 좋습니다.

그러나 여기서 중요한점은 그런식으로 대략적으로 잡는 생각의 플로우가 중요한 거구요. ㅎㅎ

 

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

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

감사합니다.

강사 큰돌 올림.

수범님의 프로필 이미지
수범

작성한 질문수

질문하기