Knob
시간 제한0.5초메모리 제한1024 MB
박자마다 왼쪽과 오른쪽 노브의 회전 방향이 주어질 때, 노브가 직전 박자와 같은 방향으로 돌아간 횟수와 두 노브가 같은 박자에 같은 방향으로 돈 횟수를 더한 점수를 구합니다.
Knob
성우는 요즘 박자에 맞춰 두 개의 노브를 정확히 조작해야 하는 리듬 게임에 빠져 있다. 노브 시스템은 다음과 같다.
- 노브는 왼쪽 노브와 오른쪽 노브 두 개가 있다.
- 각 노브는 시계 방향 또는 반시계 방향으로 돌릴 수 있다. 돌리지 않고 가만히 둘 수도 있다.
곡의 길이는 이다. 곡의 번째 박자()에서는 의 값에 따라 왼쪽 노브를, 의 값에 따라 오른쪽 노브를 다음과 같이 조작한다.
- 값이 이면 해당 노브를 돌리지 않고 가만히 둔다.
- 값이 이면 해당 노브를 반시계 방향으로 돌린다. 값이 이면 시계 방향으로 돌린다.
곡의 재미도는 매 박자에서 다음 규칙으로 측정한 값을 모두 더한 것이다.
- 2번째 박자 이후에 왼쪽 노브를 직전 박자와 같은 방향으로 돌려야 하면 재미도가 오른다.
- 2번째 박자 이후에 오른쪽 노브를 직전 박자와 같은 방향으로 돌려야 하면 재미도가 오른다.
- 두 노브를 같은 박자에 모두 돌려야 하고, 같은 방향으로 돌려야 하면 재미도가 추가로 오른다.
성우를 대신해 곡의 재미도를 구하라.
입력
첫 번째 줄에 곡의 길이를 나타내는 정수 가 주어진다. ()
두 번째 줄부터 번째 줄까지, 번째 줄에 번째 박자의 노브 조작을 나타내는 정수 , 가 공백을 사이에 두고 주어진다. 각 수는 , , 중 하나다.
출력
첫 번째 줄에 곡의 재미도를 출력한다.
힌트
입출력이 느리면 여러 줄을 입력받거나 출력할 때 시간 초과가 날 수 있다. 언어별로 다음 방법을 쓰는 것이 좋다.
-
C++:
cin/cout을 쓰려면main함수의 첫 줄에 아래 두 줄을 넣고, 입력할 때endl대신 개행 문자(\n)를 사용한다. 이 경우scanf,printf,puts,getchar,putchar등 C의 입출력 함수는 쓸 수 없다.cin.tie(nullptr);sync_with_stdio(false);
-
Python:
input대신sys.stdin.readline.rstrip()을 사용한다. -
Java, Kotlin:
Scanner와System.out.println대신BufferedReader와BufferedWriter를 사용한다.BufferedWriter.flush는 프로그램이 끝나기 전에 한 번만 호출한다.