• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

질문있습니다..!

21.01.08 21:59 작성 조회수 141

0

이 코드는 왜 틀린지 궁금합니다

a=ch[i]-ch[i+1]값의 절댓값

tmp=ch배열에 있는 입력값의 서로 인접해 있는 두 수의 차의 합

sum=결과가  yse일지 no일지의 기준

으로 잡고 문제를 풀었습니다

#include <stdio.h>

int main() {

 int n,i,tmp=0,sum=0,cnt=0,a,ch[101];   

 scanf("%d",&n);

    for(i=0;i<n;i++){

     

     scanf("%d",&ch);

     

 }

    for(i=0;i<n-1;i++){

     

 if(ch[i]-ch[i+1]>0)

    a=ch[i]-ch[i+1];  

    

    else if(ch[i]-ch[i+1]<0) 

    a=-(ch[i]-ch[i+1]);

    

    tmp=tmp+a;

 

    for(i=0;i<n;i++){

 cnt++;

 sum=sum+cnt;

}

if(tmp==sum) 

printf("yes");

else

printf("no"); 

 

 return 0;

}

답변 1

답변을 작성해보세요.

0

안녕하세요^^

ch 배열에  입력값이 들어오지 않았습니다. 한 번 출력해보세요. 그리고 1부터 n-1까지의 누적합을 구하는  sum값도 1부터 n까지의 합의로 구하고 있습니다.  위 코드의 해법인 이웃한 두수의 차들의 합이 1부터 n-1까지의 합과 같다고 해서 무조건 YES는 아닙니다. 

6

5  6  9  12  15  20

같은 입력은 정답이 NO이지만 위에 코드 방법으로는 YES가 나옵니다.

문제를 풀다가 에러가 나면 최소한 1시간 정도는 본인이 에러를 찾으려고 노력해보고 질문을 하시면 좋겠습니다.

그래야 실력이 늡니다.