작성일 : 11-07-11 21:54
2008년도 정올 전국대회 초등부 3번문제
 글쓴이 : 컴스쿨(hancomedu)
조회 : 9,346  

0.34초는 시간초과가 아닙니다.
오류가 뜨는 것은 대체로 참조하는 메모리가 범위를 벗어난 경우에 해당됩니다.
님의 코드에서는 for문에서 j는 i+1부터 시작하면 되는데 1부터 시작하니 d가 음수가 나오는 경우가 발생하여  메모리 범위를 벗어나게 되고 실행에러가 나는 것입니다.

전체적으로 강의의 내용을 잘 이해하고 충실하게 반영한 매우 훌륭한 프로그램입니다.
만약 초등학생인데 다른 도움없이 강의만 듣고 작성했다면 대단한 재능을 가진 학생인것 같습니다.

여기에서 소스를 분석하거나 수정하여 제공하지는 않지만 워낙 열심히 하는 것 같아 위의 소스를 보다 단순하게 수정해 보았습니다.
특히 함수를 작성할 때는 if문을 최대한 줄이고 리턴 조건을 먼저 처리한 후에 코딩을 하면 전체적으로 무척 깔끔해 지고 에러율도 줄일수 있으며 잘못된 부분을 찾아내기도 훨씬 용이합니다.
코딩을 단순하게 하는 훈련만 조금 하시면 앞으로 상당한 발전이 기대됩니다.

#include <stdio.h>
int aa[3010][3010];
int a[1000010];
int n;
int in[3010];
int max=0;
int t(int i, int j) {
 int d=j-i;
 if(i-d<=0 || a[i-d]==0) return 0;
 if(aa[a[i-d]][a[i]]>0) return aa[a[i-d]][a[i]]+j;
 return i-d+i+j;
}

int main() {
 int i,j;
 FILE*fin = fopen("INPUT.TXT","r");
 fscanf(fin,"%d",&n);
 for( i=1;i<=n;i++) {
  fscanf(fin,"%d",&in[i]);
 }
 fclose(fin);
 for( i=1;i<=n;i++) {
  a[in[i]]=i;
 }
 for( i=1;i<n;i++) {
  for( j=i+1;j<=n;j++) {
   aa[i][j]=t(in[i],in[j]);
   if(aa[i][j]>max) max=aa[i][j];
  }
 }
 FILE*fout = fopen("OUTPUT.TXT","w");
 fprintf(fout, "%d", max);
 fclose(fout);
 return 0;
}


황희선 11-07-11 22:34
 
아... 선생님 정말 감사합니다~^^(정올이 5일남아 절실합니다 ㅠㅠ)
제가 등차수열의 공차가 양수일때만 다룬다는 것을 생각을 못했네요.
그렇다면 시간초과의 기준은 얼마정도인지 알고 싶습니다.
또한, 정올 채점용 컴퓨터의 사양이 jungol사이트의 사양보다 뛰어나다고 하셨는데,
그렇다면, 제가 제출한 코드를 제출한다 해도 0.3초 안에 들 수 있을까요?

코드 길이가 2배정도나 줄은 것 같아요 ㅎ;;

네! 잘 알겠습니다~^^
정올때 뵐 수 있으면 좋겠네요;;
 
 

Total 665
번호 제   목 글쓴이 날짜 조회
65 초등 정보올림피아드 기출문제풀이 full패키지 (1) 오미옥 03-07 9484
64 한글2010 무료강좌.... (1) 조영희 02-27 7554
63 강의신청했는데요 (1) 김연희 02-17 7230
62 강의신청했습니다. (1) 이준석 02-02 7361
61 이거 쫌 잘못된것 같은데요 (1) 이대열 01-20 7340
60 질문요 (2) 최은숙 10-22 8682
59 강의 보기가 안되네요. (2) 이수민 10-20 8448
58 결제 확인 바랍니다. (1) 김시원 09-25 8656
57 c++ Find Source please enter the path for이라는 메세지가 자… (1) 한지민 09-01 13698
56 채우기색 회색요..+차트이중축(29일오후1시시험급함 ㅜㅜ) 정동명 08-29 11165
55 올림피아드 강의 교재는 별도로 없는건지용~ (1) 한지민 08-27 9919
54 엑셀 완전초짜인데요 차트 만들기요..질문 (1) 정동명 08-25 10159
53 알고리즘 강좌 수강하고자 합니다. (1) 박수현 08-22 10366
52 알고리즘 강좌 신청합니다 (1) 이재성 07-13 8702
51 알고리즘 강의신청이요 (1) 김선미 07-13 8265
50 기하 알고리즘 강좌 질문 있습니다. (2) 황희선 07-11 9383
49 2008년도 정올 전국대회 초등부 3번문제 (1) 황희선 07-11 11026
48    2008년도 정올 전국대회 초등부 3번문제 (1) 컴스쿨 07-11 9347
47 2008년도 정올 전국대회 초등부 2번/중등부 1번 기출문제 (1) 황희선 07-10 8831
46    2008년도 정올 전국대회 초등부 2번/중등부 1번 기출문제 (4) 컴스쿨 07-11 11800
   31  32  33  34  

회사소개 | 개인정보처리방침 | 이용약관 | 찾아오시는 길 | 이메일주소 무단수집거부 | 사업자정보확인
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호 한컴에듀케이션(주) TEL : 031-388-8840 FAX : 031-388-0996
대표자 : 김동규 사업자번호 : 130-86-02870 통신판매업신고번호 : 제 2010-경기안양-888호
COPYTIGHT(C) 한컴에듀케이션(주), ALL RIGHT RESERVED.
담은강좌 : 0