강의

멘토링

로드맵

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

한강섭님의 프로필 이미지
한강섭

작성한 질문수

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

1-M

1-M 질문있습니다

작성

·

15

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

C언어로 문제를 풀었는데 시간 초과가 났습니다.

18줄에 입력 받은 문자열이 홀수인 경우 좋은 단어가 아니어서 스택에 넣지 않는 코드를 추가하니 맞았습니다.

강사님이 해주신 풀이와 시간 초과가 난 제 코드와 로직자체는 똑같은 거 같은데 왜 제 코드에서만 시간 초과가 나는지 이유가 궁금합니다

http://boj.kr/9bf35b8f265844a7b22acec8cf31200a

답변 2

0

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

안녕하세요 ㅎㅎ

		if(stk.size() == 0)ret++;

저는 이부분에서 짝수인지, 홀수인지 판별하는 로직을 넣은 것입니다.

abba -> 다 사라져서 0, 만약 홀수라면 0이 아니게 됨.

때문에 18줄이 필요합니다.

 

감사합니다.

한강섭님의 프로필 이미지
한강섭
질문자

좋은 단어인지 검사 후에 강사님의 로직이 실행되서 실행 시간이 감소되진 않아보입니다..

제 코드는 좋은 단어인지 검사 하기 전에 홀수면 검사하지 않고 다음 단계로 넘어가서 실행 시간을 조금이나마 단축시켜 정답 처리가 되었다고 생각합니다.

그렇다면 18줄의 코드를 빼도 33줄에서 짝수인지, 홀수인지 판별하는 로직이 있어서 강사님이 해주신 풀이와 똑같다고 생각됩니다.

근데 왜 제 코드에서만 시간 초과가 나는지 궁금합니다..

0

안녕하세요, 인프런 AI 인턴입니다. 한강섭님.

질문 주신 내용은 시간 초과 문제와 관련된 것으로 보입니다. 강사님의 풀이와는 동일한 로직을 사용했지만, 시간 초과가 발생한다고 하셨는데요. 이는 일반적으로 몇 가지 이유로 발생할 수 있습니다. C언어에서의 시간 초과 문제 해결에 있어 고려할 사항을 아래에 안내드립니다.

  1. 입출력 최적화: printfscanf 등 표준 입출력 함수를 사용할 때는 ios::sync_with_stdio(false)를 C++에서 사용하듯이, C에서는 버퍼링 관련 최적화를 위해 필요한 조치를 해야 할 수 있습니다. setvbuf 함수 등을 활용해 보세요.

  2. 불필요한 연산 제거: 코드에서 반복적으로 중복된 연산이 수행되거나, 조건문이나 루프의 최적화가 부족한 경우가 있을 수 있습니다. 코드를 다시 점검하여 불필요한 부분을 제거할 수 있는지 확인합니다.

  3. 조건 검사를 적절히: 18줄에서 문자열이 홀수인 경우 스택에 넣지 않는 코드를 추가했다고 하셨습니다. 이를 통해 입력 데이터를 처리하는데 들어가는 시간을 줄이면서 최적화에 기여한 것으로 보입니다. 이러한 타당한 조건 검사를 통해 불필요한 작업을 줄이는 것은 시간 초과를 방지하는 데에 도움이 됩니다.

아래 유사한 시간 초과 문제와 관련된 이전 질문 및 답변들도 도움이 될 수 있습니다:

이러한 최적화 방법을 통해 시간이 초과되는 문제를 해결할 수 있을 것입니다. 추가적인 코드 분석이나 특정 부분에 대한 상세 문의가 필요하시면 언제든지 상황을 구체적으로 설명해 주시면 감사하겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

한강섭님의 프로필 이미지
한강섭

작성한 질문수

질문하기