백준 2346번 문제는 Deque 자료구조를 이용한 문제이다.
문제
문제는 직접 그림을 그려 보면서 풀어보면 어려운 문제는 아니다.
입력 & 출력
풀이
먼저 정수 N을 선언하여 명령어의 개수를 받아준다.
Deque를 선언하고 현재 받아온 종이의 값에 순서를 정해준다.
위의 문제를 읽어보면 알 수 있지만 시작하면 무조건 첫 번째 풍선을 터트리끼 때문에 현재 K 배열의 0번째 값을 따로 받아주고 결과 값에는 1을 넣어준다.
그 다음 for문을 통해서 종이에 적힌 값 들을 순서에 맞게 add 해준다.
먼저 첫 번째 풍선을 터트렸을 때 종이에 적힌 값은 3이므로 3번 이동한 위치의 풍선을 터트려야 된다. 따라서 3번 이동하기 까지 deque의 값을 poll해서 다시 add해준다.
3번 이동한 값의 데이터를 poll한 값을 T에 대입해주고 StringBuilder에 추가해준다.
만약 poll한 값이 음수가 나왔다면 else 문을 통해서 처리를 하는데 이때는 앞선 for문과 반대로 마지막의 값을 빼서 addFirst를 해줘야 한다. 왜냐하면 음수일 때는 반대 방향으로 움직이기 때문이다.
음수만큼 이동한 후 pollLast를 통해 값을 확인하고 해당 값을 다시 T에 대입한 후 StringBuilder에 추가해준다.
해당 과정이 다 끝나고 난 후 StringBuilder를 출력해준다.
'알고리즘 공부' 카테고리의 다른 글
프로그래머스 - 같은 숫자는 싫어(Java) (0) | 2023.11.29 |
---|---|
자바 백준_실버5 - 25206번 (0) | 2023.10.06 |
백준 실버2 18870(자바) (0) | 2023.09.07 |
백준 실버5 11866번(자바) (0) | 2023.09.04 |
백준 실버4 18258번(자바) (0) | 2023.09.04 |