Prob B

by ipark

HTML

<h2>
Prob B. 
</h2>
<ul> 입력
  <li> 2<br>. .<br>* * </li>
  <li> 4<br>. . **<br>. * . .<br>* . . .<br>. . . . </li>
</ul>
<ul> 생성 결과
  <li> Expected: <span id="extected1">1</span>, Actual: <span id="actual1"></span> </li>
  <li> Expected: <span id="extected1">7</span>, Actual: <span id="actual2"></span> </li>
</ul>
<ul> 결과
  <li> Case1: <span id="result1"></span> </li>
  <li> Case2: <span id="result2"></span> </li>
</ul>

JavaScript

//-------------------------------------------------
// Utility Fn
//
function same(l, r) {
  return (l === r) && (l === '.');
}
//-------------------------------------------------
// Business Logic
//
function process(seats) {
  var n = seats.length,
      len = n-1,
      result = 0;
  
  for(var i=0; i<n; i++) {
    for(var j=0; j<len; j++) {
    	if( solveSubProblem(seats[i], j) ) {
        result += 1;
      }
    }
  }
  
  return result;
}

function solveSubProblem(row, n) {
  return same( row[n], row[n+1] );
}
//-------------------------------------------------
// Main Fn
//
var inputs = [ ['..' , '**'], ['..**', '.*..', '*...', '....'] ];
var expected = [ 1, 7 ];

(function init(inputs) {
  var result = [];

  for (var i = 0, len = inputs.length; i < len; i++) {
    result.push( process(inputs[i]) );

    $('#actual' + (i + 1)).text(result[i]);
    $('#result' + (i + 1)).text(expected[i] === result[i]);
  }
})(inputs);