통계 1 - N의 1 개수 ------- 반복 시도

2224 단어 J#
귀속으로 하려고 하는데 109번 통과했고 뒤에 있는 것은 안 됐어요. 코드의 복잡도가 너무 커서 코드가 간단명료해야 한다는 원칙에 어긋납니다.
 
 
<script>
 //alert('0'.substr(1) === '');

 function count_1_from_1_to_N(N, index) {
  
  var first_char = N.substr(index,1); 
  var last_N = N.substr(index+1); 

  if (N == 0) {
   return 0;
  } else if (N < 0) {
   N = N * -1
  } else if (N < 10) {
   return 1;
  }
    

  if (last_N === '') {
   return 1;
  }

  if (first_char == 0) {
   return 0;
  }

  //alert("first_char : " + first_char);
  //alert("last : " + last_N);

  var value = 1 +  (first_char==1?(last_N-(-1)):0) + 1;
  // alert(value);
  //alert(first_char * sign((""+last_N).charAt(0)));
  var count = 0;

  var middle_count = 0;
  var last_left_str = last_N.substr(0, last_N.length-1);
  
  for (var i=0; i<last_left_str.length; i++) {
   if (last_left_str.charAt(i) == '1') {
    middle_count ++;
    alert(last_left_str);
   }
  }
  count = (N.length-index-1) * Math.pow(10, N.length-index-2) * first_char + sign(first_char-1)*Math.pow(10, N.length-index-1) + (first_char==1?(last_N-(-1))*(1+middle_count):0);// +  first_char * sign(last_N.charAt(0));
  //alert(count);
  return count + count_1_from_1_to_N(last_N, index+1);

        }

 function sign(n) {
  return n < 0 ? -1 : (n > 0 ? 1 : 0);
 }

 /*var N_arr = [1,3,9,10,11,12,13,14,15,16,17,18,19,20,21,22,30,31,32,40,41,42,50,51,60,61,70,71,80,81,90,91,100, 101,102,110,111,112, 1000, 10001, 10010, 10011,100112];

 for (var i =0; i<N_arr.length; i++) {
  //alert(N_arr[i]);
  var count = count_1_from_1_to_N(""+N_arr[i], 0);
  alert(N_arr[i] + " : " + count);
 }
*/
 var all_str = "";
 for (var i =0; i<122; i++) {
  //alert(N_arr[i]);
  all_str = all_str + i;
  var count_right = 0;
  for (var j=0; j<all_str.length; j++) {
   if (all_str.charAt(j) == '1') {
    count_right ++;
   }
  }
   
  var count = count_1_from_1_to_N(""+i, 0);

  if (count != count_right) {

   alert(i + " : " + count + " == " + count_right);
  }
  //alert(i + " : " + count + " == " + count_right);
 }
 

</script>

좋은 웹페이지 즐겨찾기