답변 4개
채택된 답변
+20 포인트
2년 전
Copy
<?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
)
*/
?>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
2년 전
[1,1,1,1,0,1,1,0,1,1]
같튼것 끼리의 갯수 확인이 되나요?
4,0,2,0,2
==
같은 값을 갖는 원소의 갯수가 아니고
연이어 같은 것이 나오는 것을 코딩(run length coding)하는 거군요.
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
swallow
2년 전
Copy
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]
*/
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
2년 전
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
2년 전
[code]
$myTest = array(1,1,1,0,1,1,0,0);
foreach($myTest as $myTest_value)
{
echo $myTest_value, "\n";
}
[/code]
이런식으로 연속값을 카운팅 하도록 foreach 문에 넣어 중복된 개수만큼 카운팅 해서 반환해 주는 방식으로 처리하시는 방법으로 적용이 필요할듯 합니다.
$myTest = array(1,1,1,0,1,1,0,0);
foreach($myTest as $myTest_value)
{
echo $myTest_value, "\n";
}
[/code]
이런식으로 연속값을 카운팅 하도록 foreach 문에 넣어 중복된 개수만큼 카운팅 해서 반환해 주는 방식으로 처리하시는 방법으로 적용이 필요할듯 합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인