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

김현우님의 프로필 이미지
김현우

작성한 질문수

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

2-T

2-T 질문있습니다

작성

·

70

0

http://boj.kr/4b3abb45ebbc439d9e4c7f566089586e

오큰수를 찾는 과정을

  1. 처음부터 쭉 찾아나가다가 왼쪽에 나보다 작은수가 있다면 스택에 넣는다.

  2. 나보다 큰수가 나온다면 스택에 저장된 크기만큼 해당 숫자를 출력한다.

  3. 만약 나보다 큰수가 한번도 안나온다면 -1을 출력한다.

의 과정으로 진행하였습니다.

예시답안도 정상적으로 나왔는데 왜 틀린건지 어떤 논리적 오류가 발생했는지 궁금합니다

답변 2

0

김현우님의 프로필 이미지
김현우
질문자

감사합니다

0

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

안녕하세요 ㅎㅎ 현우님 시간복잡도상 너무 큰 로직입니다.

	for(int i=0;i<N;i++){
		stack<int> s;
		bool b=false;
		
		s.push(vec[i]);
		for(int j=i+1;j<N;j++){

지금 보시면 N^2의 알고리즘인데 이 문제의 N의 최대범위는 10만입니다. 즉, 10만 * 10만을 하게 되면 100억이 되게 됩니다.

조금 더 효율적으로 구축하시면 됩니다.


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

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

감사합니다.

강사 큰돌 올림.


김현우님의 프로필 이미지
김현우

작성한 질문수

질문하기