만드는 중입니다

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

MrCodeFormatGrader

면접 대비

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

요약
전체 줄 수 C와 증가하는 순서의 오류 줄 번호 N개가 주어질 때, 오류 줄과 정상 줄을 범위로 묶어 쉼표로 나열하고 마지막 항목은 "and"로 연결해 출력한다.
난이도

보통10점 중 4점

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

문제

Bob 교수는 소스 코드 서식 자동 채점 웹사이트를 만들고 있다. 웹사이트의 이름은 "MrCodeFormatGrader"이다. Bob의 프로그램을 실행해 소스 코드를 제출하면, 프로그램은 소스 코드의 줄 수 CC, 서식 오류가 있는 소스 코드 줄 수 NN, 그리고 서식이 올바르지 않은 줄 번호의 목록을 출력한다. 줄 번호는 공백으로 구분되며 오름차순으로 주어진다.

예를 들어 100줄짜리 프로그램에서 2, 3, 5, 10, 11, 12, 25, 26, 88, 89번 줄에 총 10개의 오류가 있다면, 원래 프로그램은 다음과 같이 출력할 수 있다.

100 10
2 3 5 10 11 12 25 26 88 89

그런데 이 프로그램을 사용한 사람들은 이 출력이 읽기 불편하다고 말했다. 당신의 임무는 위 출력을 읽고, 오류 목록을 압축한 것과 올바른 줄 목록을 압축한 것, 이렇게 두 목록을 보여주는 것이다.

입력

입력은 두 줄로 이루어진다. 첫째 줄에는 검사하는 프로그램의 소스 코드 줄 수 CC와 서식 오류가 있는 소스 코드 줄 수 NN이 주어진다. CC는 2≤C≤100 0002 ≤ C ≤ 100\,000을 만족하고, NN은 1≤N≤min⁡(C,1 000)1 ≤ N ≤ \min(C, 1\,000)을 만족한다. 둘째 줄에는 서식 오류가 있는 소스 코드 줄의 번호 NN개가 주어진다. 이 값은 CC 이하의 양의 정수이며 엄격히 증가하는 순서로 나열된다.

출력

출력은 두 줄로 이루어진다. 첫째 줄은 문자열 "Errors:"로 시작하고, 그 뒤에 공백, 그 뒤에 오류가 있는 줄의 목록이 온다. 둘째 줄은 문자열 "Correct:"로 시작하고, 그 뒤에 공백, 그 뒤에 오류가 없는 줄의 목록이 온다. 두 목록 모두 연속한 줄 번호의 묶음은 첫 줄과 마지막 줄을 하이픈('-')으로 구분해 나타낸다. 목록에 항목이 두 개 이상이면 각 항목은 쉼표와 공백으로 구분하되, 각 목록의 마지막 값(또는 마지막 연속 구간) 앞에는 쉼표와 공백 대신 "and"를 쓴다. 예제 출력을 참고하라. 참고: 모든 프로그램에는 오류가 있는 줄이 적어도 하나, 올바른 줄이 적어도 하나 있다.

예제2

  1. 예제 1

    입력
    100 10
    2 3 5 10 11 12 25 26 88 89
    
    예상 출력
    Errors: 2-3, 5, 10-12, 25-26 and 88-89
    Correct: 1, 4, 6-9, 13-24, 27-87 and 90-100
    
  2. 예제 2

    입력
    40 18
    1 3 4 6 7 8 9 12 13 14 20 25 26 27 28 30 38 40
    
    예상 출력
    Errors: 1, 3-4, 6-9, 12-14, 20, 25-28, 30, 38 and 40
    Correct: 2, 5, 10-11, 15-19, 21-24, 29, 31-37 and 39