바둑돌 나열
면접 대비시간 제한1초메모리 제한128 MB
돌을 하나씩 놓는데, 짝수 번째 돌의 색이 오른쪽 끝 돌과 다르면 끝에 연속한 같은 색 돌 무리를 새 색으로 바꾸고, 마지막에 남는 흰 돌의 개수를 센다.
문제
흰색과 검은색 바둑돌을 테이블 위에 한 줄로 나열하는 놀이를 한다. 먼저 테이블의 가장 왼쪽에 바둑돌 하나를 놓고, 그다음 왼쪽에서 번째 자리에 바둑돌을 놓는다. 이를 번 반복하여 개의 바둑돌을 가로로 한 줄로 나열한다. 단, 새로 번째 바둑돌을 놓을 때는 다음 규칙에 따라 테이블 위의 바둑돌을 바꾼다.
- 가 홀수인 경우: 테이블에 이미 놓여 있는 바둑돌은 그대로 두고, 새 바둑돌을 왼쪽에서 번째 자리에 놓는다.
- 가 짝수인 경우: 새로 왼쪽에서 번째에 놓을 바둑돌의 색과 테이블 위 오른쪽 끝 바둑돌의 색이 같으면, 테이블 위의 바둑돌은 바꾸지 않고 새 바둑돌을 왼쪽에서 번째 자리에 놓는다. 그렇지 않은 경우, 즉 새로 놓을 바둑돌의 색과 오른쪽 끝 바둑돌의 색이 다르면, 먼저 테이블 오른쪽 끝에 연속으로 놓여 있는 같은 색 바둑돌을 모두 걷어내고 그 자리를 번째 바둑돌과 같은 색으로 바꿔 놓는다. 그런 다음 테이블 오른쪽 끝에 번째 바둑돌을 놓는다.
예를 들어, 처음 개의 바둑돌을 놓은 시점에서
○○●●○○○
와 같이 되어 있다고 하자. (○는 흰 바둑돌, ●는 검은 바둑돌을 나타낸다.)
- 번째 바둑돌이 흰색(○)인 경우, 오른쪽 끝 바둑돌과 색이 같으므로 그대로 놓는다. 따라서 테이블 위의 바둑돌은
○○●●○○○○
가 된다.
- 번째 바둑돌이 검은색(●)인 경우, 오른쪽 끝 바둑돌(○)과 색이 다르므로 먼저 오른쪽 끝에 연속으로 놓인 흰 바둑돌(○) 개를 걷어내고 검은 바둑돌(●)로 바꿔 놓는다. 그런 다음 오른쪽 끝에 번째 바둑돌을 놓는다. 따라서 테이블 위의 바둑돌은
○○●●●●●●
가 된다.
입력으로 바둑돌을 놓는 순서가 주어질 때, 개의 바둑돌을 모두 나열한 뒤 테이블 위에 남아 있는 흰 바둑돌의 개수를 구하는 프로그램을 작성하여라.
입력
첫째 줄에 양의 정수 ()이 주어진다. 둘째 줄부터 번째 줄 ()에는 번째로 놓는 바둑돌의 색을 나타내는 정수 가 주어진다. 가 이면 번째 바둑돌의 색이 흰색임을, 이면 검은색임을 나타낸다.
출력
개의 바둑돌을 모두 나열한 뒤 테이블 위에 놓여 있는 흰 바둑돌의 개수를 한 줄에 출력한다.