시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 512 MB | 86 | 24 | 23 | 29.487% |
현욱은 회사로부터 특수한 명령어를 이용해 주어진 데이터를 압축하는 프로그램을 작성하는 업무를 받게 됐다. 데이터는 길이가 $N$($1 \le N \le 10000$)인 0과 1로만 구성된 문자열로 표현되며, 현욱이 작성해야하는 프로그램은 아래 목록과 같은 명령어를 사용해서 작성할 수 있다.
명령어는 한 줄에 하나씩 작성하며 프로그램은 명령어의 맨 윗라인부터 순서대로 명령을 수행한다. 메모리 셀은 $0$번부터 $2 \cdot 10^5$번 셀까지 존재한다. 각 메모리 셀의 값은 맨 처음에 $0$으로 초기화되어 있다.
프로그램은 $N$ 글자를 출력한 경우, 명령어 실행 횟수가 $10^5$회를 넘어간 경우, 프로그램의 끝에 도달한 경우, 혹은 잘못된 명령어가 입력된 경우 종료한다. Start, End의 실행 횟수도 명령어 실행 횟수에 포함된다.
위 조건 하에서 입력으로 받은 데이터와 동일한 데이터를 출력하는 프로그램을 작성하려고 한다. 용량 문제로 명령어의 길이는 $2000$ 라인을 넘을 수 없다. 현욱을 도와 주어진 입력 데이터를 나타내는 프로그램을 작성해보자.
첫 줄에 $N$이 주어진다($ 1 \le N \le 10000 $).
둘째 줄에 길이가 $N$인 0과 1로만 구성된 문자열이 주어진다.
첫 줄에 사용한 명령어의 개수 $K$를 출력한다($ 1 \le K \le 2000 $).
둘째 줄부터 $K$줄에 걸쳐 입력으로 주어진 문자열을 생성할 수 있는 프로그램 명령어를 출력한다.
$000...0111...1$ 형태의 입력만 주어진다.
추가 제한 없음
3 011
3 Print 0 Print 1 Print 1
6 011001
10 Write 0 1 Write 1 0 Print *1 Print *0 Print **1 Print **0 Add 1 Write 0 0 Print *0 Print *1
6 010101
4 Start Print 0 Print 1 End
명령어는 다음과 같은 순서대로 실행되며 이 때 명령어 수행 횟수는 11회가 된다.
Contest > BOJ User Contest > 소프트콘 > 제3회 소프트콘 F번