본문 바로가기

디큐6

[백준] 21611번 - 마법사 상어와 블리자드 [Java] https://www.acmicpc.net/problem/21611 1.  아이디어 달팽이 배열을 활용한 다양한 연산을 하는 문제로 구슬을 파괴 후 재배치 -> 구슬의 폭발과 재배치 반복 -> 구슬의 변화 순서가 반복된다.각 단계를 수행하는 메서드를 작성해서 조합하는 방식으로 해결했고 달팽이 배열의 이동을 처리하기 위해 Queue와 Deque, 델타 배열을 활용했다.2. 문제풀이 달팽이 배열의 회전 방향에 맞춰 반시계 방향으로 델타 배열을 만들었고 입력의 d를 이 델타 배열에 맞추기 위한 배열도 선언했다. 이후 각 마법에 대해 destroy 메서드를 호출했는데 해당 메서드에서 마법의 한 사이클을 전부 수행했다. 먼저 구슬을 파괴한 후 재배치를 해야하는데 이때 달팽이 배열의 순회로 구슬을 Queue에 담고.. 2025. 2. 23.
[백준] 3190번 - 뱀 [Java] https://www.acmicpc.net/problem/3190 1.  아이디어 뱀을 Deque 자료구조를 활용해서 머리와 꼬리를 이동시키는 방식으로 해결했다.2. 문제풀이 뱀의 이동은 머리와 꼬리 정보만 필요하므로 이를 Deque 자료구조로 관리했고 다음 칸이 뱀의 몸통인지 체크해야해서 정사각보드에 뱀이 위치한 칸들은 따로 체크를 했다. 시계방향 또는 반시계방향으로 방향 배열의 인덱스를 설정한 후 모듈러 연산을 활용하면 뱀의 머리의 회전도 간단하게 구현할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final int EMPTY = 0; private static final int APPLE.. 2025. 2. 13.
[백준] 9935번 - 문자열 폭발 [Java] https://www.acmicpc.net/problem/9935 1.  아이디어 문자열을 Deque에 담으며 폭발 문자열의 마지막 글자를 발견하면 폭발 문자열인지 임시 Stack으로 판단하는 방식으로 해결했다.2. 문제풀이 문자열의 각 문자를 일단 Deque에 담고 해당 문자가 폭발 문자열의 마지막 문자면 Deque에서 최근에 담은 문자들을 하나씩 Stack으로 옮기며 폭발 문자열이 맞는지 검증했다. 폭발 문자열이면 Stack을 초기화하면 되고 폭발 문자열이 아니면 Stack의 문자들을 다시 Deque에 넣어주는 과정을 반복하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String.. 2025. 2. 12.
[백준] 5397번 - 키로거 [Java] https://www.acmicpc.net/problem/5397 1.  아이디어 현재 커서의 앞에 있는 문자들과 뒤에 있는 문자들을 각각 담는 Deque, Stack 자료구조를 활용하면 간단하게 해결할 수 있다.2. 문제풀이 현재 커서의 바로 앞 문자가 peek로 오는 Deque와 현재 커서 바로 뒤 문자가 peek로 오는 Stack으로 명령들을 처리하면 됐다. 백스페이나 화살표가 주어지면 해당 자료구조로 커서의 이동 및 문자 삭제를 수행하고 글자가 오면 커서 앞에 삽입하도록 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException .. 2025. 2. 11.
[백준] 1406번 - 에디터 [Java] https://www.acmicpc.net/problem/1406 1.  아이디어 현재 커서의 앞에 있는 문자들과 뒤에 있는 문자들을 각각 담는 Deque, Stack 자료구조를 활용하면 간단하게 해결할 수 있다.2. 문제풀이 현재 커서의 바로 앞 문자가 peek로 오는 Deque와 현재 커서 바로 뒤 문자가 peek로 오는 두 개의 Stack으로 명령들을 처리하면 됐다. 명령 수행 후 커서를 맨 앞으로 옮긴 후 모든 문자를 출력하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedRea.. 2025. 2. 11.
[백준] 10866번 - 덱 [Java] https://www.acmicpc.net/problem/10866 1.  아이디어 덱을 직접 구현하는 것을 권장하는 문제로 구현의 편의를 위해 Deque 인터페이스의 ArrayDeque를 이용했다.2. 문제풀이 swith문을 활용해서 명령을 처리하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedW.. 2025. 1. 12.