중첩 점
보통
유형
프로그래밍
배점
100점
참여자
414
정답률
96.6%
16
9
문제
한 변의 길이가 인 정사각형이 있다. 플레이어는 이 정사각형 위에 개의 반직선을 그린 뒤, 두 반직선이 교차하는 점의 수를 세려고 한다. 플레이어가 반직선을 그리는 과정은 아래와 같다.
- 반직선을 그리기 시작할 칸 를 정한다. 는 주어진 정사각형을 크기의 정사각형으로 나눴을 때, 번째 행의 번째 열에 해당하는 칸이다.
- 반직선을 그릴 방향 를 정한다. 방향은 상하좌우 중 하나이며, 항상 정사각형 테두리의 가로 혹은 세로와 평행하다.
- 반직선을 그린다. 반직선은 항상 시작 칸의 테두리에서부터 시작하며, 같은 칸을 지나는 평행한 직선이 서로 만나지 않도록 그린다.
아래 그림은 길이가 인 정사각형 위에 다음 세 개의 직선을 그린 그림이다.
- , 오른쪽 / , 왼쪽 / , 위쪽
칸과 칸을 지나는 두 개의 가로 반직선이 있지만, 두 반직선은 서로 평행하기 때문에 중첩 점이 생기지 않는다. 그러나 칸을 지나는 세로 반직선과 두 반직선은 교차하므로 결과적으로는 두 개의 중첩 점이 생긴다.
플레이어가 모든 반직선을 그린 뒤 생기는 중첩 점의 개수를 구해보자.
예제 설명
첫 번째 예제를 그림으로 나타내면 아래와 같이 여섯 개의 중첩 점이 생긴다.
입력
첫째 줄에 정사각형의 크기 과 그리려는 반직선의 개수 이 공백을 두고 주어진다.
다음 개의 줄에는 플레이어가 그을 반직선의 정보를 나타내는 가 공백을 두고 주어진다. 칸에서 시작해 방향으로 반직선을 긋는다는 의미이다.
- 는
U
,D
,L
,R
의 네 문자 중 하나이다. 각각 상하좌우 방향을 의미한다.
출력
모든 반직선을 그렸을 때, 중첩 점의 개수를 출력하시오.