문제
첫 번째이자 유일한 인수로 단일 문자 배열인 arr을 취하는 JavaScript 함수를 작성해야 합니다.
배열은 4개의 문자만 포함할 수 있으며 다음과 같습니다. -
- 'N' → 북쪽 방향을 나타냄
- 'S' → 남쪽 방향을 나타냄
- 'W' → 서쪽 방향을 나타냄
- 'E' → 동쪽 방향을 나타냄
각 문자는 특정 방향으로의 단위 거리 이동을 지정합니다. 그리고 배열의 어느 곳에서나 반대 방향 [('S'와 'N') 또는 ('E'와 'W')]이 인접하게 나타나면 서로의 움직임을 상쇄합니다. 따라서 우리 함수는 결과적으로 전체 배열의 이동 방향을 찾아야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const arr = ['N', 'S', 'S', 'E', 'W', 'N', 'W'];
그러면 출력은 다음과 같아야 합니다. -
const output = 'W';
출력 설명
'N'과 'S'는 서로를 취소하고 'E'와 'W'는 서로를 취소하고 마지막으로 'N'과 'S'는 서로 취소하여 'W'만 남깁니다.
예시
다음은 코드입니다 -
const arr = ['N', 'S', 'S', 'E', 'W', 'N', 'W']; const cancelDirections = (arr = []) => { let str = arr.join(''); while(str.includes('NS') || str.includes('SN') || str.includes('EW') || str.includes('WE')){ str = str.replace('NS', ''); str = str.replace('SN', ''); str = str.replace('EW', ''); str = str.replace('WE', ''); }; return str.split(''); }; console.log(cancelDirections(arr));
출력
다음은 콘솔 출력입니다 -
['W']