단순 크론 명세
면접 대비시간 제한4초메모리 제한1024 MB
시, 분, 초 필드를 크론 형식으로 파싱한 뒤, 적어도 하나의 작업이 시작되는 서로 다른 초의 개수와 전체 작업 시작 횟수를 센다.
문제
크론 명세는 Linux에서 특정 작업을 언제 반복 실행할지 지정할 때 쓴다. 이 문제에서는 하루 안에서 작업을 언제 실행해야 하는지 정의하는 단순 크론 명세를 다룬다. 단순 크론 명세는 공백으로 구분된 세 개의 토큰으로 이루어진다:
hours minutes seconds
이는 작업이 실행될 시, 분, 초를 지정한다. 시 값은 0-23, 분과 초 값은 0-59이다.
각 토큰은 정수 값 하나, 값 범위(대시 ‘-’로 구분된 두 값), 여러 값 또는 값 범위를 쉼표로 나열한 목록, 별표(‘*’) 중 하나로 이루어진다. 값 범위는 낮은 값과 높은 값을 포함하여 그 사이의 모든 정수 값을 나타낸다. 별표는 가능한 모든 값을 나타내는 특별한 토큰이다. 쉼표로 나열한 목록에 지정된 값들은 서로 겹치지 않아야 한다.
예를 들어, 다음과 같은 명세는:
* 30 20,25,30-33
작업이 매시, 30분에, 그리고 20, 25, 30, 31, 32, 33초에 실행됨을 뜻하며, 하루에 총 24 × 1 × 6 = 144번 실행된다.
단순 크론 명세 목록이 주어졌을 때 두 가지를 구하라. 첫째, 하루 중 적어도 하나의 작업이 시작되는 초의 개수, 둘째, 하루 동안의 총 작업 시작 횟수. 작업 하나가 하루에 24번 시작되면 작업 시작 24번으로 센다.
입력
첫째 줄에 정수 ()이 주어진다. 이는 뒤따르는 단순 크론 명세의 개수이다.
다음 개 줄 각각에는 세 문자열 , , 가 있다. 이는 단순 크론 명세의 시, 분, 초 명세이다. 각 , , 는 별표 하나(‘*’)이거나, 하나 이상의 값 또는 값 범위(‘-’로 구분된 두 값)를 쉼표로 나열한 목록이다. 값과 범위는 적절한 한계(시는 0에서 23, 분과 초는 0에서 59) 안에 있으며 서로 겹치지 않는다. 모든 범위 명세는 서로 다른 두 값으로 이루어지며 작은 값이 먼저 온다. 쉼표로 나열한 목록에 지정된 모든 값은 엄격히 증가하는 순서이다. 전체가 올바른 단순 크론 명세임이 보장된다. 줄에 있는 공백은 와 사이, 과 사이의 공백 하나씩뿐이다.
출력
공백으로 구분된 두 정수를 출력한다. 첫째는 24시간 하루 중 적어도 하나의 작업이 시작되는 초의 개수이고, 둘째는 총 작업 시작 횟수이다.