Unix ls 열 맞춤 출력

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

파일 이름 목록이 주어집니다. 이 목록을 아스키(ASCII) 문자 값 기준으로 오름차순 정렬한 뒤, 유닉스 ls 명령처럼 여러 열(column)로 맞춰 출력하는 프로그램을 작성하세요.

각 파일 이름의 길이는 1자 이상 60자 이하입니다. 가장 긴 파일 이름의 길이를 $L$이라 할 때 출력은 다음 규칙을 따릅니다.

  • 모든 열은 왼쪽 정렬합니다.
  • 각 파일 이름은 너비가 $L+2$인 칸에 왼쪽 정렬로 출력합니다. 이 여백은 마지막 열을 포함한 모든 열에 적용되므로, 각 출력 줄의 끝에는 공백이 남습니다.
  • 한 줄에 들어가는 열의 개수 $C$는 $(C-1)\times(L+2) + L \le 60$을 만족하는 가장 큰 값입니다. 즉, 마지막 열의 실제 내용 너비 $L$까지 60칸 안에 들어가야 합니다.
  • 행(row)의 수 $R$은 가능한 한 적어야 합니다. 정렬된 파일들은 각 열을 위에서 아래로 채우며, $1$번부터 $R$번 파일은 1열에, $R+1$번부터 $2R$번 파일은 2열에, 이런 식으로 열 우선(column-major)으로 배치합니다.

입력

입력은 여러 개의 파일 목록으로 이루어집니다. 각 목록은 파일 개수 $N$ ($1 \le N \le 100$)이 적힌 줄로 시작하고, 이어서 $N$개의 줄에 각각 파일 이름이 하나씩 주어집니다. 한 줄의 전체 내용이 하나의 파일 이름이며 길이는 1자 이상 60자 이하입니다. 파일 이름에 쓰이는 문자는 영문자(a–z, A–Z), 숫자(0–9), 그리고 ., _, - 뿐입니다. 잘못된 문자나 빈 줄은 없습니다. 마지막 파일 이름 바로 다음에는 다음 목록의 $N$이 오거나 입력이 끝납니다. 입력이 끝날 때까지 모든 목록을 읽어 처리해야 합니다.

출력

각 파일 목록마다 먼저 - 60개로 이루어진 줄을 출력하고, 그다음 위 규칙에 따라 열로 맞춘 파일 이름들을 출력합니다. 정렬된 파일 중 $1$번부터 $R$번은 1열에, $R+1$번부터 $2R$번은 2열에 나열되는 식으로 열 우선(column-major) 순서로 채웁니다.