Algorithm/Baekjoon For.Java

5397 : 키로거

Jinny zinny 2023. 3. 13. 09:23

양방향 반복자인 LIstIterator의 사용 여부

반복이 끝난 iter의 재사용이 아닌 ListIterator를 하나를 더 만들어 사용한다.

 

중간 중간 반복자의 이용시 오류가 없도록 해당 위치에 원소가 있는지 꼭 체크해보자

import java.util.*;
import java.io.*;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int T = Integer.parseInt(br.readLine());

		for (int i = 0; i < T; i++) {
			String[] input = br.readLine().split("");
			
			LinkedList<String> Keyloger=new LinkedList();
			
			ListIterator iter=Keyloger.listIterator();
			
			for(int j=0;j<input.length;j++) {
				if(input[j].equals("<")) {
					if(iter.hasPrevious()) {
						iter.previous();
					}
				} else if(input[j].equals(">")) {
					if(iter.hasNext()) {
						iter.next();
					}
				} else if(input[j].equals("-")) {
					if(iter.hasPrevious()) {
						iter.previous();
						iter.remove();
					}
				} else {
					iter.add(input[j]);
				}
			}
			Iterator it=Keyloger.iterator();
			while(it.hasNext()) {
				String s=(String)it.next();
				bw.write(s);
			}
			
			bw.write("\n");
		}
		bw.flush();
	}
}
반응형