만드는 중입니다

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

가상 검증

시간 제한3초메모리 제한1024 MB

요약
비밀번호 14자리를 48개 시계의 시침에 저장하고, 시계가 섞이고 자기장으로 시침이 움직인 뒤에도 비밀번호를 복원하는 프로그램을 작성합니다.
난이도

보통10점 중 7점

유형
수학, 구현, 조합론
정답자
아직 제출이 없습니다

문제

현대오토에버가 개발하는 가상 검증 플랫폼은 차량 내 제어기, 시스템, 차량을 가상화하고 가상주행환경도 구축해 차량에 대한 통합 시뮬레이션을 할 수 있다. 이 플랫폼을 차량 소프트웨어 개발에 적용하면 차량이나 제어기의 실물이 제작되기 전에 소프트웨어를 개발하고 검증할 수 있다. 이를 통해 차량 소프트웨어의 개발 기간을 단축하고, 더 높은 안정성을 지닌 차량을 개발할 수 있다.

현대오토에버의 기술자인 김 군은 새로운 차량 소프트웨어의 개발에 전념하고 있다. 이제 마지막으로 남은 것은 가상 검증 플랫폼으로 소프트웨어가 실제로 잘 작동하는지 확인하는 일이다. 그런데 가상 검증에서 소프트웨어의 심각한 결함이 발견되었다. 이 소프트웨어는 숫자로만 이루어진 14자리 비밀번호를 입력해야 작동을 시작하도록 프로그래밍되어 있다. 하지만 일부 환경에서는 비밀번호 정보가 손실된다. 해결 방법을 고민하던 김 군의 눈에 차량 내부의 시계가 들어왔다.

이 소프트웨어는 총 48개의 시계 정보를 읽거나 조정할 수 있다. 앞의 24개 시계는 1타입 시계이고, 뒤의 24개 시계는 2타입 시계이다. 각 시계에는 시침만 있으며, 시침은 시계 방향으로 1시부터 24시까지 가리킬 수 있다. 새 비밀번호를 설정하면 소프트웨어가 각 시계의 시침을 설정한다. 모든 시계는 같은 모양이므로, 같은 타입끼리는 물론이고 다른 타입끼리도 구분할 수 없다.

주행 중에는 두 가지 현상이 발생할 수 있으며, 한 번의 주행에서 여러 번 발생할 수도 있다.

  1. 차량에 충격이 가해진다. 이 경우 시계들의 순서가 무작위로 섞인다.
  2. 차량이 자기장이 있는 환경에 진입한다. 자기장의 세기가 xx인 환경에 들어가면 1타입 시계의 시침은 시계 방향으로 xx만큼, 2타입 시계의 시침은 시계 방향으로 2x2x만큼 움직인다. 시계가 24시를 가리키고 있을 때 시침이 시계 방향으로 1만큼 움직이면 1시를 가리킨다.

소프트웨어는 어떤 변형이 어떤 방식으로 가해졌는지 알지 못한다. 비밀번호를 알아야 하는 상황이 오면, 소프트웨어는 시계의 시침을 읽고 비밀번호를 복원해야 한다.

시계에 정보를 저장한다는 아이디어는 좋았지만, 김 군은 다양한 환경에서 시시각각 변하는 시계의 상태를 보고 비밀번호를 알아낼 방법을 찾지 못하고 있다. 김 군을 위해 비밀번호를 시계에 저장하고 다시 알아내는 프로그램을 작성하라.

예제2

  1. 예제 1

    입력
    0
    00000000000001
    
    예상 출력
    1 2 3 4
    
  2. 예제 2

    입력
    1
    3 2 2 1
    
    예상 출력
    00000000000001