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 |