Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Mayorga

#1
Hola Buenas,

Hace poco me han propuesto un ejercicio de java que esta subido en la pagina de aceptaElReto. Os dejo el link para que podais ver el enunciado: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

He conseguido hacerlo pero tengo un problema de tiempo de ejecución y no se como resolverlo. La ejecución no puede tardar mas de 3 segundos.

Os dejo también mi código a ver si podeis decirme alguna solución para optimizar mi código.


Código: java
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

private static boolean conseguido = false;

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
ArrayList<String> output = new ArrayList<String>();

int caso = sc.nextInt();
ArrayList<Integer> casos = new ArrayList<Integer>();
while(caso!=0) {
casos.add(caso);
caso=sc.nextInt();
}
sc.close();

for(int i = 0; i<casos.size(); i++) {
conseguido = false;
int pivote = casos.get(i);
int num = 1;
sumarCinco(pivote,num);
multiplicarTres(pivote,num);
String out;
if(conseguido) {
out = "SI\n";
}else {
out ="NO\n";
}
output.add(out);
}

for(int i = 0; i<output.size();i++) {
System.out.println(output.get(i));
}



}

public static int comparar(int pivote, int num){
if(num<pivote) {
return 1;
}else if(num == pivote) {
return 0;
}
return -1;
}

public static void sumarCinco(int pivote, int num) {
num += 5;
int resultadoComparar = comparar(pivote,num);

if(resultadoComparar==1 && !conseguido) {
sumarCinco(pivote,num);
multiplicarTres(pivote,num);
}else if(resultadoComparar==0) {
conseguido=true;
}

}

public static void multiplicarTres(int pivote,int num) {
num *= 3;
int resultadoComparar = comparar(pivote,num);

if(resultadoComparar==1 && !conseguido) {
sumarCinco(pivote,num);
multiplicarTres(pivote,num);
}else if(resultadoComparar==0) {
conseguido=true;
}

}
}