보통사람

[7kyu] 문자열 'x'와'o'의 개수가 같은지 비교 (Exes and Ohs) 본문

Codewars/Javascript

[7kyu] 문자열 'x'와'o'의 개수가 같은지 비교 (Exes and Ohs)

pej4303 2019. 8. 2. 23:51
/**
 * <pre>
 * 문자열 'x'와'o'의 개수가 같은지 비교 (Exes and Ohs)
 * 
 * 문자열에 'x'와 'o'가 같은지 확인하십시오. 
 * 이 메서드는 부울을 반환하고 대 / 소문자를 구분해야합니다. 
 * 문자열에는 모든 문자가 포함될 수 있습니다.
 * 
 * Check to see if a string has the same amount of 'x's and 'o's. 
 * The method must return a boolean and be case insensitive. 
 * The string can contain any char.
 * </pre>
 *
 * @auther : pej
 * @date : 2019. 03. 23.
 * @param : {String} 비교할 문자열
 * @return : {Boolean} true / false
 * @example : XO("ooxx") ==> true
 *            XO("ddddd") ==> true
 *            XO("xooxx") ==> false
 *
 */
function XO(str) {
    var result = false;
    
    if ( /o|x/gi.exec(str) ) {
        var oLen = ( str.match(/o/gi) || [] ).length; // 'o'의 개수
        var xLen = ( str.match(/x/gi) || [] ).length; // 'x'의 개수
        
        if (oLen == xLen) {
            result = true;
        }
        
    } else { // 'o'와 'x'가 없으면 true를 반환
        result =  true;
    }
    
    return result;
}

 

  • 방법2) - 다른 사람이 한 것
function XO(str) {
    var x = (str.match(/x|X/g) || []).length;
    var o = (str.match(/o|O/g) || []).length;
    return x === o;
}