입력된 숫자들 중 가장 큰 소인수를 지닌 숫자를 찾는 문제

조회수 238회

시간복잡도가 큰 코드인 건 아는데 논리적인 오류 부분은 없어보입니다. 그런데 오답이 계속 뜨네요...
이유가 뭘까요??

#include <cstdio>

int a[5001];
int maxv[5001];
int n;

void input(){
  scanf("%d",&n);
  for(int i = 1;i<=n;i++){
    scanf("%d",&a[i]);
  }
}



void core(){
  int cnt = 0;
  for(int i = 1;i<=n;i++){
    for(int j = 1; j<=a[i];j++){
      if(a[i]%j==0){
        // printf("%d ",j);
        for(int z=1;z<=j;z++){
          if(j%z == 0){
          cnt++;

          }
        }
        if(cnt==2){
          if(maxv[i] < j){
            maxv[i] = j;
          }

        }

        cnt = 0;
      }
    }
  }
}


void output(){
  int max = 0;
  int idx;
  for(int i = 1;i<=n;i++){
    if(max < maxv[i]){
      max = maxv[i];
      idx = i;
    }
  }

  printf("%d",a[idx]);

}


int main(void){
  input();
  core();
  output();

}

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)