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: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
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
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: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
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.
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;
}
}
}
