숫자 문자열을 연속한 조각으로 나누어 합이 목표값을 넘지 않으면서 최대가 되도록 하고, 최적 조각이 여러 개면 rejected, 어떤 분할도 목표값을 넘으면 error를 출력한다.
보통6백트래킹완전 탐색재귀구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB세단기 회사에서 새 세단기를 개발하는 일을 맡았다. 보통 세단기는 종이를 잘게 잘라 내용을 읽을 수 없게 만들지만, 이 세단기는 다음과 같이 동작한다.
예를 들어 목표 수가 50이고 종이에 적힌 수가 12346이라고 하자. 세단기는 종이를 1, 2, 34, 6 네 조각으로 자른다. 합이 43(= 1 + 2 + 34 + 6)이고, 50을 넘지 않는 모든 조합 중에서 50에 가장 가깝기 때문이다. 1, 23, 4, 6으로 자른 조합은 합이 34(= 1 + 23 + 4 + 6)라서 43보다 작으므로 답이 아니다. 12, 34, 6으로 자른 조합도 합이 52(= 12 + 34 + 6)라서 목표 수 50을 넘으므로 답이 아니다.

그림 1. 목표 수가 50일 때 12346이 적힌 종이를 자르는 방법
특별한 규칙이 세 가지 있다.
error를 출력한다. 예를 들어 목표 수가 1이고 종이에 적힌 수가 123이면 합이 가장 작은 조합은 1, 2, 3이고 그 합은 6이라서 목표 수보다 크다. 그래서 error를 출력한다.rejected를 출력한다. 예를 들어 목표 수가 15이고 종이에 적힌 수가 111이면 합이 가장 큰 12가 되는 조합이 (a) 1과 11, (b) 11과 1 두 가지라서 rejected를 출력한다.이 세단기를 만들려고 위 동작과 규칙을 그대로 흉내 내는 프로그램을 먼저 작성하기로 했다. 목표 수와 종이에 적힌 수가 주어지면 세단기가 두 번째 수를 어떻게 잘라야 하는지 구하라.
입력은 여러 개의 테스트 케이스로 이루어지고, 각 테스트 케이스는 한 줄이다.
t1 num1
t2 num2
...
tn numn
0 0
각 테스트 케이스는 공백 하나로 구분한 양의 정수 두 개다. 첫 번째 정수 ti는 목표 수이고, 두 번째 정수 numi는 자를 종이에 적힌 수다.
두 정수 모두 첫 자리가 0일 수 없다. 예를 들어 123은 되지만 0123은 안 된다. 두 정수의 길이는 최대 6자리다. 0이 두 개 있는 줄은 입력의 끝을 뜻한다.
각 테스트 케이스마다 다음 세 가지 형태 중 하나를 한 줄에 출력한다.
rejectederror첫 번째 형태에서 partj와 sum의 뜻은 다음과 같다.
수와 수 사이는 공백 하나로 구분한다.
조합을 하나도 만들 수 없으면 error를, 가장 가까운 합을 만드는 조합이 둘 이상이면 rejected를 출력한다.
각 줄의 앞과 뒤에 공백을 포함한 여분의 문자를 출력하면 안 된다.