728x90

문제

키보드를 누른 기록이 저장된 키로거 문자열에서

화살표와 백스페이스를 계산해서 실제 비밀번호를 알아내는 문제

 

접근 방식

에디터에서 사용했던 방식처럼 이번에도 연결 리스트와 이터레이터를 사용하면 될거 같다.

 

어떤 부분에 글자가 추가되고 어떤 부분이 빠지는지 수정해서 최종 결과를 구한다.

 

풀이

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int n = Integer.parseInt(br.readLine());

    for (int i = 0; i < n; i++) {
        char[] testCase = br.readLine().toCharArray();

        LinkedList<Character> list = new LinkedList<>();
        ListIterator<Character> iterator = list.listIterator();

        for (char c : testCase) {
            switch (c) {
                case '-': {
                    if (iterator.hasPrevious()) {
                        iterator.previous();
                        iterator.remove();
                    }
                    break;
                }
                case '<': {
                    if (iterator.hasPrevious()) {
                        iterator.previous();
                    }
                    break;
                }
                case '>': {
                    if (iterator.hasNext()) {
                        iterator.next();
                    }
                    break;
                }
                default: {
                    iterator.add(c);
                    break;
                }
            }
        }

        for (char ch : list) {
            bw.write(ch);
        }
        bw.write("\n");
        bw.flush();
    }
    bw.close();
}

 

'Java > Algorithms' 카테고리의 다른 글

[백준] 10828번 : 스택  (0) 2023.10.01
[백준] 1158번 : 요세푸스 문제  (0) 2023.10.01
[백준] 1406번 : 에디터  (0) 2023.09.29
[백준] 3273번 : 두 수의 합  (0) 2023.09.28
[백준] 1475번 : 방 번호  (0) 2023.09.28

+ Recent posts