본문 바로가기
Algorithm/Baekjoon For.Java

5397 : 키로거

by Jinny zinny 2023. 3. 13.

양방향 반복자인 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();
	}
}
반응형

'Algorithm > Baekjoon For.Java' 카테고리의 다른 글

10816 : 숫자 카드 2  (0) 2023.03.17
1351 : 무한 수열  (0) 2023.03.16
1406 : 에디터  (0) 2023.03.12
1013 : Contact  (0) 2023.03.12
15312 : 이름 궁합  (0) 2023.03.11