만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Unix ls 열 맞춤 출력

시간 제한1초메모리 제한128 MB

요약
파일 이름을 ASCII 값 기준으로 정렬한 뒤, 60자 안에 들어가는 최소 행 수로 열 우선 방식의 열을 맞춰 출력한다.
난이도

쉬움10점 중 3점

유형
정렬, 구현, 시뮬레이션, 문자열
정답자
아직 제출이 없습니다

문제

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

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

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

입력

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

출력

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

예제3

  1. 예제 1

    입력
    10
    long-file-name
    the
    longest
    file
    name
    short
    tiny
    abc
    mid-length
    88888888.333
    10
    longer_filename
    2short4me
    another
    long
    name
    12
    Weaser
    Alfalfa
    Stimey
    Buckwheat
    10
    Porky
    Joe
    Darla
    Cotton
    Butch
    Froggy
    Mrs_Crabapple
    P.D.
    Mr._French
    19
    10
    Buffy
    Danny
    Jody
    Lori
    Shirley
    Chris
    Jan
    Keith
    Marsha
    Sissy
    10
    Alice
    Carol
    Greg
    Peter
    Shirley
    Bobby
    Cindy
    Mike
    Ruben
    Sissy
    
    예상 출력
    ------------------------------------------------------------
    88888888.333    longest         the             
    abc             mid-length      tiny            
    file            name            
    long-file-name  short           
    ------------------------------------------------------------
    12               Stimey           longer_filename  
    2short4me        Weaser           name             
    Alfalfa          another          
    Buckwheat        long             
    ------------------------------------------------------------
    19             Darla          Mr._French     Porky          
    Butch          Froggy         Mrs_Crabapple  
    Cotton         Joe            P.D.           
    ------------------------------------------------------------
    Buffy    Danny    Jody     Lori     Shirley  
    Chris    Jan      Keith    Marsha   Sissy    
    ------------------------------------------------------------
    Alice    Carol    Greg     Peter    Shirley  
    Bobby    Cindy    Mike     Ruben    Sissy    
    
  2. 예제 2

    입력
    1
    readme.txt
    
    예상 출력
    ------------------------------------------------------------
    readme.txt  
    
  3. 예제 3

    입력
    5
    beta
    alpha
    delta
    charlie
    echo
    3
    z
    y
    x
    
    예상 출력
    ------------------------------------------------------------
    alpha    beta     charlie  delta    echo     
    ------------------------------------------------------------
    x  y  z