😎풀이

  1. 교차는 다음의 상황에서만 이루어진다.
    1-1. 축이 네 개 이상일 경우 (i >= 3)
    1-2. i번째 축과 i-3번째 축이 만날 경우 (첫번째와 네번째 축)
    1-3. i번째 축과 i-4번째 축이 만날 경우 (첫 번째와 다섯 번째)
    1-4. i번째 축과 i-5번째 축이 만날 경우 (첫 번째와 여섯 번째)
  2. 도형을 생각하며 각 지점이 만나려면 어떤 변이 길고 짧아야 하는지 계산하여 예외 처리를 한다.
  3. 탐색 후 찾지 못했다면 false 반환
function isSelfCrossing(distance: number[]): boolean {
    for(let i = 3; i < distance.length; i++) {
        if(distance[i] >= distance[i - 2] && distance[i - 1] <= distance[i - 3]) return true
        if(i >= 4 && distance[i] + distance[i - 4] >= distance[i - 2] && distance[i - 3] === distance[i - 1]) return true
        if(i >= 5 && distance[i] + distance[i - 4] >= distance[i - 2] && distance[i - 3] > distance[i - 1] && distance[i - 5] + distance[i - 1] >= distance[i - 3] && distance[i - 2] > distance[i - 4]) return true
    }

    return false
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글