코딩 테스트 응시 중 C++ 말고 Java 자료구조의 부족함에 대해 뼈저리게 느꼈다. Java 자료구조부터 다시 해서 그래프, 다익스트라 등으로 다시 공부하겠다.
자바에서의 Queue와 Deque에 대해 알아봤다. C++보다 유연성이 있다. 나중에 다시 정리한다.
import java.util.*;
public class bj2002 {
static Scanner scanner = new Scanner(System.in);
static Queue<String> inputCar = new LinkedList<>();
static Queue<String> outputCar = new LinkedList<>();
public static void main(String[] args) {
inputData();
System.out.println(findAnswer());
scanner.close();
}
public static void inputData(){
System.out.println("inputData()");
int N, i;
String carNum;
N = scanner.nextInt();
for(i = 0; i < N; i++){
carNum = scanner.next();
inputCar.offer(carNum);
}
for(i = 0; i < N; i++){
carNum = scanner.next();
outputCar.offer(carNum);
}
}
public static int findAnswer(){
System.out.println("findAnswer()");
int answer = 0;
String temp;
while(!outputCar.isEmpty()){
temp = outputCar.poll();
System.out.println("현재 ouputCar " + temp);
//!((inputCar의 가장 앞 요소).equals(outputCar의 가장 앞 요소)가 false) => true
if(!inputCar.peek().equals(temp)){
answer++;
System.out.println("false인 경우 inputCar 현재 요소 " + inputCar.peek());
inputCar.remove(temp);//자바에서는 remove를 통해 중간 요소도 제거 가능
System.out.print("inputCar에 들어있는 요소 : ");
for(String str : inputCar){
System.out.print(str + " ");
}
System.out.println();
System.out.println("answer : "+ answer);
}
else{
System.out.println("true인 경우 inputCar 현재 요소 " + inputCar.peek());
inputCar.poll();
}
System.out.println();
}
return answer;
}
}