Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열 중화 결과 구하는 방법

문제 소개

오직 '+' 또는 '-' 기호만으로 이루어진 문자열이 주어질 때, 문자열 전체의 중화(neutralisation) 결과를 계산하여 '+' 또는 '-'를 반환하는 JavaScript 함수를 작성해야 합니다.

중화 규칙은 다음과 같습니다.

  • '++' → '+'
  • '--' → '+'
  • '-+' 또는 '+-' → '-'

즉, 같은 기호가 만나면 '+'가 되고, 서로 다른 기호가 만나면 '-'가 됩니다. 곱셈 부호 규칙과 유사하게 동작한다고 생각하면 이해하기 쉽습니다.

예시 문자열

const str = '+++-+-++---+-+--+-';

구현 코드

다음은 split()reduce() 메서드를 활용한 해결 코드입니다.

const str = '+++-+-++---+-+--+-';
const netResult = (str = '') => {
    const strArr = str.split('');
    return strArr.reduce((acc, val) => {
        if(acc === val){
            return '+';
        };
        return '-';
    });
};
console.log(netResult(str));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

-

코드 동작 원리

이 코드의 동작 과정을 단계별로 살펴보겠습니다.

  1. 문자열 분리: split('')을 사용해 문자열을 한 글자씩 나눈 배열로 변환합니다.
  2. 순차적 중화: reduce()가 배열을 순회하면서 누적값(acc)과 현재값(val)을 하나씩 비교합니다.
  3. 기호 판정: 두 값이 같으면 '+'를, 다르면 '-'를 반환하고, 그 결과가 다음 순회의 누적값이 됩니다.
  4. 최종 결과: 모든 문자를 처리한 뒤 마지막에 남은 단 하나의 기호가 전체 중화 결과가 됩니다.

이처럼 reduce()를 활용하면 별도의 반복문 없이도 간결하고 가독성 좋게 문자열 중화 로직을 구현할 수 있습니다.