카드
면접 대비시간 제한1초메모리 제한128 MB
카드를 행과 열로 반복 재배열하는 게임에서 여러 번의 열 응답과 일치하는 후보 숫자들을 모두 찾는 문제입니다.
문제
데이브와 할이 카드로 게임을 한다. 데이브에게는 카드가 장 있고, 은 3의 배수()이며, 카드에는 부터 까지의 번호가 적혀 있다.
각 카드의 양면에는 같은 번호가 적혀 있고, 서로 같은 번호를 가진 카드는 없으며, 카드는 처음에 번호 오름차순으로 정렬되어 있다.
먼저 할이 집합 중에서 수 하나를 마음속으로 정한다.
그다음 데이브가 모든 카드를 앞면이 보이도록 개의 행과 개의 열로 이루어진 격자에 놓는다. 배치는 행 단위로 이루어진다. 첫 번째 행에는 왼쪽에서 오른쪽으로 카드 , 카드 , 카드 을 놓고, 다음 세 장으로 두 번째 행을 채우며, 이런 식으로 마지막 카드가 마지막 행을 채울 때까지 계속한다.
그러면 할은 자신이 정한 수가 적힌 카드가 지금 몇 번째 열(첫째, 둘째, 셋째)에 있는지 데이브에게 말한다.
데이브는 카드를 열 단위로 모은다. 먼저 첫째 열 전체를 위에서 아래로(행 , 행 , ..., 행 ) 걷고, 이어서 둘째 열을 같은 방식으로, 마지막으로 셋째 열을 걷는다. 섞지 않고, 이렇게 모은 더미를 앞에서와 똑같이 행 단위로 다시 탁자 위에 배치한다.
이 과정을 반복한다. 데이브가 배치를 끝낼 때마다 할은 자신의 카드가 있는 열을 다시 알려 준다. 할의 모든 대답이 끝난 뒤에도 여러 수가 그가 말한 모든 내용과 여전히 일치할 수 있다.
할의 대답을 이용하여 할이 정한 수의 후보가 될 수 있는 수들의 가장 작은 집합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 카드의 수 이 주어진다 (, 은 의 배수).
둘째 줄에 배치 횟수, 즉 할의 대답 횟수 가 주어진다 ().
이어지는 개의 줄에는 각 배치에 대한 할의 대답이 순서대로 주어지며, 각 줄에는 first, second, third 중 하나의 단어가 있다.
출력
할이 정한 수의 후보가 될 수 있는 모든 수를 오름차순으로, 공백 하나로 구분하여 한 줄에 출력한다.