만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

고장 난 기함

시간 제한1초메모리 제한1024 MB

요약
길이가 1000 이하인 바람 방향 문자열 X와 Y가 주어질 때, X를 Y로 돌리는 최소 회전 각도를 구합니다.
난이도

보통10점 중 5점

유형
문자열, 구현
정답자
아직 제출이 없습니다

문제

아호이! 당신은 최신 제품인 새로운 방식의 나침반을 팔려고 다음 "Boats Are Pretty Cool" 컨벤션으로 항해하고 있다.

일반 나침반으로는 정확한 바람 방향을 읽기 어렵다. 새 나침반은 바람 방향을 훨씬 높은 정밀도로 읽을 수 있다. 디스플레이는 최대 10001000글자의 문자열을 표시할 수 있다.

강한 바람과 큰 파도가 몇 시간 동안 이어진 뒤에야 나침반을 다시 볼 수 있었다. 현재 향하고 있는 바람 방향 XX를 읽었고, 가야 할 바람 방향 YY도 알고 있다. 배를 돌리려면 배가 회전해야 할 각도를 제어 시스템에 도 단위로 입력해야 한다. 올바른 항로로 돌아가려면 최소 몇 도를 돌아야 하는가?

그림 F.1: 바람 방향

기본 방향은 N, E, S, W이며 각각 00, 9090, 180180, 270270도를 가리킨다. 두 글자 방향은 NE, SE, SW, NW이며 각각 4545, 135135, 225225, 315315도를 가리킨다.

바람 방향은 k≥3k\geq 3개의 글자 l1l2…lkl_1l_2\ldots l_k로 이루어질 수도 있다. 이때 마지막 두 글자는 두 글자 방향 중 하나이고, 즉 lk−1lk∈{NE,SE,SW,NW}l_{k-1}l_k \in \{\text{NE}, \text{SE}, \text{SW}, \text{NW}\}이다. 나머지 글자는 모두 i≤k−2i \leq k-2인 모든 ii에 대해 li∈{lk−1,lk}l_i \in \{l_{k-1}, l_k\}를 만족한다. 이 바람 방향은 다음 두 방향의 정중앙을 가리킨다.

  • 바람 방향 l2…lkl_2\ldots l_k
  • l2…lkl_2\ldots l_k에서 출발해 원을 따라 l1l_1 쪽으로 이동할 때 처음 만나는, 글자가 k−1k-1개 이하인 바람 방향

예를 들어 SSSE는 SSE와 S의 정중앙을 가리킨다. SSE에서 S 쪽으로 이동하면 글자가 3개 이하인 방향 중 처음 만나는 것이 S이기 때문이다. 그림 F.1에서도 확인할 수 있다.

입력

한 줄에 두 문자열 XX와 YY(1≤∣X∣,∣Y∣≤10001 \leq |X|, |Y| \leq 1000)가 주어진다. 두 문자열은 위에서 설명한 바람 방향이다.

출력

XX 방향에서 YY 방향으로 가기 위해 필요한 최소 회전각을 출력한다. 절대 오차는 10−610^{-6} 이하이면 된다.

예제3

  1. 예제 1

    입력
    N S
    
    예상 출력
    180
    
  2. 예제 2

    입력
    NNE SSSE
    
    예상 출력
    146.25
    
  3. 예제 3

    입력
    ENE NW
    
    예상 출력
    112.5