만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

앵무새

시간 제한4초메모리 제한512 MB

요약
도착 순서가 뒤섞여도 메시지를 복원할 수 있도록, 0부터 255 사이의 정수 N개로 된 메시지를 최대 K개의 0부터 R 사이 정수로 바꾸고 다시 원래대로 되돌리는 프로그램을 작성합니다.
난이도

보통10점 중 7점

유형
비트 연산, 수학, 구현
정답자
아직 제출이 없습니다

문제

fYanee는 새를 좋아하는 사람이다. IP over Avian Carriers(IPoAC)를 알게 된 뒤로 그녀는 지능이 높은 앵무새 무리를 훈련해 먼 거리까지 메시지를 나르게 하는 데 시간을 많이 쓰고 있다.

Yanee의 꿈은 새들을 이용해 아주 먼 곳에 있는 땅으로 메시지 M을 보내는 것이다. 메시지 M은 0 이상 255 이하의 정수로 이루어진 길이 N의 수열이다(같은 값이 여러 번 나올 수 있다). Yanee는 특별히 훈련한 앵무새 K마리를 기르고 있다. 앵무새들은 모두 똑같이 생겨서 Yanee가 서로 구별할 수 없다. 각 새는 0 이상 R 이하의 정수 하나를 기억할 수 있다.

처음에 그녀는 간단한 방법을 시도했다. Yanee는 메시지를 보내려고 새들을 우리에서 하나씩 조심스럽게 풀어 주었다. 각 새가 하늘로 날아오르기 전에, 그녀는 메시지 수열의 수를 순서대로 하나씩 가르쳤다. 안타깝게도 이 방법은 통하지 않았다. 결국 새들은 모두 목적지에 도착했지만, 떠난 순서대로 도착하지는 않았다. 이 방법으로는 Yanee가 보낸 수를 모두 복원할 수 있었지만, 올바른 순서로 맞추지는 못했다.

꿈을 이루려면 Yanee에게 더 나은 방법이 필요하고, 그래서 그녀는 당신의 도움을 원한다. 그녀는 메시지 M이 주어지면 앞에서처럼 새를 하나씩 내보낼 계획이다. 당신은 다음 두 가지 작업을 각각 수행하는 프로그램을 작성해야 한다.

  • 첫째, 프로그램은 메시지 M을 읽고, 이를 0 이상 R 이하의 정수 최대 K개로 이루어진 수열로 바꾼다. Yanee는 이 정수들을 새에게 가르친다.
  • 둘째, 프로그램은 새들이 목적지에 도착했을 때 받은 0 이상 R 이하의 정수 목록을 읽고, 이를 원래의 메시지 M으로 되돌린다.

모든 앵무새는 반드시 목적지에 도착하며 각 새는 자신에게 배정된 수를 기억한다고 가정해도 된다. Yanee는 다시 한번 알려 준다. 앵무새는 어떤 순서로든 도착할 수 있다. Yanee가 가진 앵무새는 K마리뿐이므로, 당신이 만드는 0 이상 R 이하의 정수 수열에는 정수가 최대 K개만 들어 있어야 한다.

예제1

  1. 예제 1

    입력
    1
    5
    
    예상 출력
    5