알고리즘/BOJ

백준 25596번 마트료시카 박스 II

꾸준함. 2022. 9. 22. 06:56

문제 링크입니다: https://www.acmicpc.net/problem/25596

 

25596번: 마트료시카 박스 II

첫 번째 줄에 수정 전 설계도의 박스의 개수 $N$, 수정 후 설계도의 최대 서브 박스 개수 $M$, 추가할 수 있는 박스의 개수 $K$가 공백으로 구분되어 주어진다. $(4 \leq N \leq 1\,000;$ $2 \leq M \leq N - 2;$ $0

www.acmicpc.net

큐 배열을 이용하여 푼 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. N이 최대 1,000이고 K 또한 최대 1,000이므로 크기가 2,000이 넘는 큐 배열을 선언해줍니다. 

2. 주어진 입력을 토대로 1번에서 선언한 큐 배열을 전처리해줍니다.

3. 모든 박스를 순회하며 서브 박스의 개수가 M개 이하인지 확인하고 M개 초과라면 아래와 같이 처리해줍니다.

3.1 각 박스의 서브 박스가 M개 이하가 될 때까지 새로운 박스를 서브 박스로 추가하고 해당 서브 박스에 기존 서브 박스를 중첩합니다.

3.2 이 과정에서 추가한 박스가 K개가 넘어갈 경우 불가능한 케이스이므로 0을 출력하고 프로그램을 종료합니다.

4. 3번 과정을 통과하면 가능한 케이스이므로 1과 추가한 박스 개수를 출력합니다.

4.1 그리고 1부터 (N + 추가한 박스 개수)를 순회하며 해당 박스의 서브 박스 개수와 서브 박스들을 출력하고 프로그램을 종료합니다.

 

 

개발환경:Visual Studio 2022

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형