Solución al problema: 185C - Cd and pwd commands [http://codeforces.com] con Java
El link del Problema se encuentra en el siguiente
enlace
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;
/**
* 185C - Cd and pwd commands [http://codeforces.com]
*
* @author BreakDark
* @version 1.0 beta
*/
// ACEPTADO!!! xD
public class Main {
public static void main(String[] args) {
Scanner Lee; // para leer los datos de entrada
String linea, salida; // para procesar una linea y la salida
StringTokenizer LeerLinea; // para leer una linea
byte n; // numero de instrucciones
Stack pila = new Stack(); // para los directorios
Stack pilaAux = new Stack();
// AQUI INICIA EL PROGRAMA!!!
Lee = new Scanner(System.in);
while (Lee.hasNextLine()) {
n = Byte.parseByte(Lee.nextLine());
pila.clear(); // vaciamos todo
while (n-- > 0) {
linea = Lee.nextLine();
if (linea.equals("pwd")) {
// mostramos el directorio actual
salida = "";
while (!pila.empty()) {
linea = pila.pop();
salida = ("/" + linea) + salida;
pilaAux.push(linea);
}
// reponemos la pila
while (!pilaAux.empty())
pila.push(pilaAux.pop());
salida += "/";
System.out.println(salida);
} else {
// si es cd
linea = linea.substring(3);
if (linea.charAt(0) == '/') {
// si es el directorio raiz
pila.clear();
LeerLinea = new StringTokenizer(linea.replace('/', ' '));
while (LeerLinea.hasMoreTokens()) {
linea = LeerLinea.nextToken();
if (linea.charAt(0) == '.') {
// si es que hay que retroceder una carpeta
pila.pop();
} else
pila.push(linea);
}
} else {
LeerLinea = new StringTokenizer(linea.replace('/', ' '));
while (LeerLinea.hasMoreTokens()) {
linea = LeerLinea.nextToken();
if (linea.charAt(0) == '.') {
// si es que hay que retroceder una carpeta
pila.pop();
} else
pila.push(linea);
}
}
}
}
}
}
}
|
No comments:
Post a Comment