아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

북극 탐사 로봇

시간 제한1초메모리 제한256 MB

요약
두 집게와 균형 비교만 사용하는 로봇이 일직선 위의 돌을 무게순으로 정렬하도록 APECODE 프로그램을 작성한다.
난이도

보통10점 중 5점

유형
정렬, 시뮬레이션, 구현, 투 포인터
정답자
아직 제출이 없습니다

문제

북극 원정대가 문제에 봉착했다. 자율 북극 탐사 로봇(APE)이 더 높은 절벽에 올라가야 하는데, 그런 임무를 염두에 두고 설계된 로봇이 아니었다. 관제 센터의 과학자들은 즉석에서 방법을 짜내야 했고, 기발한 해결책을 떠올렸다. 로봇이 스스로 계단을 쌓아 절벽을 올라가는 것이다.

APE의 임무는 북극권에서 진행되며, 그곳의 지형에는 암석, 빙산, 그리고 이따금 길을 잃은 펭귄이 널려 있다. APE는 크기가 제각각인 돌을 여러 개 모아 두었고, 이제 그 돌들을 크기 순으로 정렬되도록 옮기는 것이 목표다. 돌의 크기는 무게에 비례한다. 돌들은 일직선으로 늘어서 있고, 1미터마다 돌 하나가 놓여 있다. APE는 현재 첫 번째 돌 옆에 서 있고, 절벽은 마지막 돌 바로 뒤에 있다. 로봇은 돌이 늘어선 선과 나란히 좌우로 움직일 수 있다. 그림 3은 가능한 상황 하나를 나타낸다.

바깥 세계를 조작하는 유일한 수단은 돌을 집을 수 있는 그리퍼가 달린 두 팔이다. 안타깝게도 돌의 무게를 측정할 방법은 없다. 또 한 번의 긴 브레인스토밍 끝에 관제 센터의 과학자들은 그리퍼에 든 돌의 무게를 로봇의 기울기를 재서 비교할 수 있다는 것을 알아냈다. 로봇이 왼쪽으로 기울면 왼쪽 그리퍼에 더 무거운 돌이 들려 있고, 오른쪽으로 기울면 오른쪽 그리퍼에 더 무거운 돌이 들려 있다.

마지막으로 APE는 메모리가 매우 적어서 프로그램을 작성하기가 상당히 어렵다. 로봇용 소프트웨어는 모두 APECODE라는 전용 언어로 작성한다.

그림 3: 북극 탐사 로봇이 놓일 수 있는 상황의 스케치. 왼쪽 그리퍼에 돌을 들고 있고 오른쪽 그리퍼는 비어 있다. 돌은 다섯 개이고 절벽은 오른쪽에 있다.

힌트

APE에서 돌아가는 프로그램은 APECODE로 작성해야 한다. 다른 프로그래밍 언어는 북극 탐사 로봇에서 작동하지 않는다.

예제1

  1. 예제 1

    입력
    1
    9
    7 1 6 3 4 9 2 5 8
    
    예상 출력
    1 2 3 4 5 6 7 8 9