Logo
(追記) (追記ここまで)

31252번 - 가상 검증 투 스텝

시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 (추가 시간 없음) 1024 MB (추가 메모리 없음)39131238.710%

문제

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

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

해당 소프트웨어는 총 48개의 시계 정보를 읽어오거나 조정할 수 있다. 처음에 앞에 있는 24개의 시계는 1타입 시계이며, 뒤에 있는 24개의 시계는 2타입 시계이다. 특이하게도 각 시계는 시침만 있으며, 시침은 시계 방향 순서대로 1시부터 24시까지 표현할 수 있다. 새 비밀번호를 설정하면 소프트웨어는 각 시계의 시침을 설정한다. 각 시계는 전부 동일하게 생겼으므로, 같은 타입끼리는 물론이요 다른 타입들끼리도 서로 구분이 불가능하다.

여러 번의 가상 검증을 통해 BOJ군은 주행 중에 발생할 수 있는 현상을 두 가지로 분류했다. 차량 소프트웨어는 다양한 환경에서도 정상적으로 작동해야 하므로 차량 주행 도중에 두 현상이 여러 번 발생할 수도 있다.

  1. 차량에 충격이 가해진다. 이 경우, 시계들의 순서가 무작위로 섞인다.
  2. 차량이 자기장이 있는 환경에 진입한다. 자기장의 세기가 $x$인 환경에 진입하면 1타입 시계들의 시침은 $x$만큼, 2타입 시계들의 시침은 2ドルx$만큼 시계방향으로 움직인다. 24시를 가리키고 있는 상황에서 시침이 시계 방향으로 1 만큼 움직이면 1시가 된다.

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

시계에 정보를 저장한다는 아이디어는 좋았지만, BOJ군은 어떻게 해야 다양한 환경에서 시시각각 변하는 시계들의 상태를 보고 비밀번호를 알아낼 수 있을지 감을 잡지 못하고 있다. BOJ군을 위해 비밀번호를 저장하고 알아내는 프로그램을 작성해 주자.

인터랙션

이 문제는 투 스텝 문제이다. 처음에 입력으로 $t$가 주어진다. $t=0$이면 소프트웨어가 새 비밀번호를 받고 시계들의 상태를 설정하는 상황임을, $t=1$이면 주행이 끝난 후 비밀번호를 복원하는 상황임을 나타낸다.

$t=0$이면, 다음 줄에 14자리의 음이 아닌 정수 $k$가 주어진다. 이는 초기에 입력된 비밀번호가 $k$임을 의미한다. $k$를 입력받은 뒤, 1 이상 24 이하의 정수 48개를 공백으로 구분하여 출력한다. 이는 초기에 설정한 시계들의 상태를 의미하며, 첫 24개의 정수는 1타입 시계, 이후 24개의 정수는 2타입 시계의 초기 상태를 나타낸다.

$t=1$이면, 다음 줄에 1 이상 24 이하의 정수 $a_1,a_2,...,a_{48}$이 공백으로 구분되어 주어진다. 이는 주행 이후 앞에서 $i$번째에 해당하는 시계의 시침이 $a_i$를 가리키고 있음을 의미한다. 이후 한 개의 음이 아닌 정수를 출력한다. 이는 처음에 설정된 비밀번호 $k$여야 한다. 비밀번호를 출력할 때, 반드시 앞자리에 0을 추가하여 14자리에 맞추어 출력하여야 한다.

입력

출력

제한

  • 0ドル\leq k<10^{14}$
  • 1ドル\leq a_i\leq 24$

예제 입력 1

0
00000000000001

예제 출력 1

1 2 3 4

예제 입력 2

1
3 2 2 1

예제 출력 2

00000000000001

이 예제는 이해를 돕기 위한 것으로, 실제 문제에서는 48개의 시계를 사용하므로 올바르지 않은 인터랙션이다. 이 예제에서 시계들의 시침은 4까지 있으며, 앞의 두 시계가 1타입이고 나머지 두 시계가 2타입이다. 프로그램은 비밀번호 00000000000001을 입력받은 뒤, 네 개의 시계의 시침을 1, 2, 3, 4로 설정한다.

주행 도중 차량에 충격이 가해져서 시계들이 2(1), 1(1), 4(2), 3(2)와 같이 뒤섞인 뒤, 차량이 자기장의 세기가 1ドル$인 환경에 진입해서 시계들의 상태가 3(1), 2(1), 2(2), 1(2)와 같이 변형된 상황을 생각해 보자. 소프트웨어는 3, 2, 2, 1이라는 정보를 보고 원래의 비밀번호 00000000000001을 알아내서 출력해야 한다.

힌트

출처

Contest > BOJ User Contest > Good Bye, BOJ > Hello, BOJ 2024! G번

채점 및 기타 정보

  • 예제는 채점하지 않는다.
(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /