배열 갯수 확인
본문
[1,1,1,1,0,1,1,0,1,1]
같튼것 끼리의 갯수 확인이 되나요?
4,0,2,0,2
답변 4
<?php
function count_of_continuous_element($arg, $withzero = true) {
$arr = [];
$before = current($arg);
$cnt = 0;
for ($i = 0, $i_cnt = count($arg); $i < $i_cnt; $i++) {
$v = $arg[$i];
if ($before == $v) {
$cnt++;
} else {
if ($withzero == false && $before == 0) {
$cnt = 0;
}
$arr[] = $cnt;
$cnt = 1;
}
$before = $v;
}
if ($withzero == false && $before == 0) {
$cnt = 0;
}
$arr[] = $cnt;
return $arr;
}
$arr = [1,1,1,1,0,1,1,0,1,1];
$val = count_of_continuous_element($arr);
/*
Array
(
[0] => 4
[1] => 1
[2] => 2
[3] => 1
[4] => 2
)
*/
$val = count_of_continuous_element($arr, false);
/*
Array
(
[0] => 4
[1] => 0
[2] => 2
[3] => 0
[4] => 2
)
*/
?>
function get_len($array, $index=0, &$result) { if($index >= count($array)) { return; } $start = $array[$index]; $count = 0; for($i=$index; $i<count($array); $i++) { if($start == $array[$i]) { $index++; $count++; } else { //$index++; break; } } array_push($result, $count); get_len($array, $index, $result); } // 사용방법 $arr = [1,1,1,1,0,1,1,0,1,1]; $len = []; get_len($arr, 0, $len); var_dump($len); /* [4,1,2,1,2] */
[1,1,1,1,0,1,1,0,1,1]
같튼것 끼리의 갯수 확인이 되나요?
4,0,2,0,2
==
같은 값을 갖는 원소의 갯수가 아니고
연이어 같은 것이 나오는 것을 코딩(run length coding)하는 거군요.
답변을 작성하시기 전에 로그인 해주세요.