화성
면접 대비시간 제한7초메모리 제한1024 MB
K개 성부와 N개 음 행이 주어질 때, 두 성부가 모두 움직이면서 12로 나눈 나머지가 7인 간격을 유지하는 연속한 두 행의 성부 쌍을 모두 찾아 출력한다.
문제
고전 화성학에서는 여러 성부로 이루어진 악곡을 쓸 때 이른바 평행 5도를 피해야 한다. 평행 5도란 다음과 같은 상황을 말한다. 두 성부 사이의 반음 단위 거리를 로 나눈 나머지가 이고, 이어서 두 성부의 음높이가 모두 바뀐 뒤 두 성부 사이의 반음 단위 거리를 로 나눈 나머지가 다시 이 되는 경우이다.¹
평행 5도는 두 성부의 음높이가 모두 바뀔 때에만 발생한다. 즉, 연속된 두 음에서 두 성부 사이의 거리를 로 나눈 나머지가 이더라도, 두 성부 중 하나 또는 둘의 음높이가 그대로라면 평행 5도가 아니다.
개의 성부로 이루어진 악곡에서 평행 5도의 존재 여부를 찾아내는 프로그램을 작성하라.
음높이는 정수로 주어진다. 값 은 첫째 옥타브의 도(C) 음을 나타내며, 양의 정수 는 그보다 반음 높은 음을, 음의 정수는 그만큼 낮은 음을 나타낸다. 예를 들어 는 첫째 옥타브의 미(E) 음에, 은 작은 옥타브의 라(A) 음에 해당한다.²
¹ 음악 이론에 더 관심 있는 독자를 위한 참고: 때로는 연속된 두 개의 완전 5도뿐 아니라, 예컨대 완전 5도에 이어지는 감 5도(각각 7반음과 6반음)도 평행 5도로 보기도 한다. 이 문제에서는 연속된 두 개의 완전 5도만을 평행 5도로 본다.
² 이 문제를 푸는 데 음 이름을 이해할 필요는 없다.
입력
첫째 줄에는 공백으로 구분된 두 정수 과 가 주어진다 (, ). 여기서 은 각 성부에 들어 있는 음의 개수, 는 성부의 개수이다.
이어지는 개의 줄에는 각각 공백으로 구분된 개의 정수 가 주어진다. 는 번째 성부에서 번째 음의 높이이다 (, ). 한 줄에 주어진 음들은 동시에 울리며, 연속한 줄에 있는 음들은 바로 이어서 울린다.
출력
악곡에 평행 5도가 없으면 한 줄에 단어 POLE을 출력한다.
평행 5도가 있으면, 각 평행 5도마다 한 줄씩 출력한다. 음의 줄 와 사이에서 성부 와 () 사이에 평행 5도가 생기면, 공백으로 구분된 세 정수 , , 를 출력한다.
모든 평행 5도를 의 오름차순으로 출력한다. 두 줄의 가 같으면 의 오름차순으로, 와 가 모두 같으면 의 오름차순으로 정렬한다.