문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

7122 : 시뮬레이션 — 컨베이어벨트

•시간제한: 2.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

7122 : 시뮬레이션 — 컨베이어벨트

시간 2.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

길이가 N인 단선 컨베이어벨트가 있습니다. (0번부터 N-1번 칸)
각 칸에는 초기 내구도가 정해져 있으며, 다음 두 가지 명령을 시뮬레이션해야 합니다.
- UP: 0번 칸에 로봇을 하나 올립니다. 0번 칸에 이미 로봇이 있거나 내구도가 0이면 올리지 못합니다. 로봇이 성공적으로 올라가면 0번 칸의 내구도가 1 감소합니다.
- MOVE: 벨트에 있는 로봇들이 앞으로 한 칸씩 전진을 시도합니다. 가장 앞(N-1)에 도달한 로봇은 벨트에서 즉시 내립니다. 각 로봇은 앞 칸(i+1)에 다른 로봇이 없고 앞 칸의 내구도가 1 이상일 때만 전진할 수 있습니다. 이동에 성공하면 앞 칸의 내구도가 1 감소하며, N-1번에 도달한 로봇은 벨트에서 즉시 내려가므로 그 칸에 로봇이 남지 않습니다. (이동은 가장 앞쪽에 위치한 로봇부터 순서대로 진행합니다.)





[제약 조건]
• 입력되는 모든 수는 정수입니다.

입력 설명

첫째 줄에 벨트의 길이 N과 명령의 개수 M이 공백으로 구분되어 주어집니다. (2 ≤ N ≤ 100, 1 ≤ M ≤ 1,000)
둘째 줄에 벨트의 각 칸별 초기 내구도가 N개 공백으로 구분되어 주어집니다. (각 내구도는 1,000 이하의 자연수)
셋째 줄에 M개의 명령(UP 또는 MOVE)이 공백으로 구분되어 주어집니다.

출력 설명

모든 명령을 처리한 후, 벨트 위에 남아있는 최종 로봇의 수와 내구도가 0이 된 칸의 개수를 공백으로 구분하여 출력합니다.

입력 예시
COPY
복사되었습니다!

3 5
2 2 2
UP MOVE UP MOVE MOVE

출력 예시
COPY
복사되었습니다!

0 3

도움

벨트의 각 칸에 로봇이 있는지 여부를 나타내는 불리언 배열과 내구도를 기록하는 배열을 두고, MOVE 시 i=N-2부터 역순으로 이동 판정을 진행합니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘