답변 4개
채택된 답변
+20 포인트
2년 전
</p>
<p><?php
function count_of_continuous_element($arg, $withzero = true) {
$arr = [];</p>
<p> </p>
<p> $before = current($arg);
$cnt = 0;</p>
<p> </p>
<p> 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;
}</p>
<p> </p>
<p> if ($withzero == false && $before == 0) {
$cnt = 0;
}</p>
<p> $arr[] = $cnt;</p>
<p> </p>
<p> return $arr;
}</p>
<p> </p>
<p>$arr = [1,1,1,1,0,1,1,0,1,1];</p>
<p> </p>
<p>$val = count_of_continuous_element($arr);
/*
Array
(
[0] => 4
[1] => 1
[2] => 2
[3] => 1
[4] => 2
)
*/</p>
<p> </p>
<p>$val = count_of_continuous_element($arr, false);
/*
Array
(
[0] => 4
[1] => 0
[2] => 2
[3] => 0
[4] => 2
)
*/
?></p>
<p>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
2년 전
[1,1,1,1,0,1,1,0,1,1]
같튼것 끼리의 갯수 확인이 되나요?
4,0,2,0,2
==
같은 값을 갖는 원소의 갯수가 아니고
연이어 같은 것이 나오는 것을 코딩(run length coding)하는 거군요.
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
2년 전
</pre> <pre> 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); }</pre> <p> </p> <p>// 사용방법</p> <pre> $arr = [1,1,1,1,0,1,1,0,1,1]; $len = [];</pre> <pre> get_len($arr, 0, $len);</pre> <p>var_dump($len);</p> <p>/*</p> <pre dir="ltr"> <b>[4,1,2,1,2]</b> */</pre> <p dir="ltr">
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
플라이
Expert
2년 전
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
�
웹랭귀지
2년 전
구분지어서 저렇게 갯수를 알아야 해소요
�
플라이
2년 전
아 부분부분 이군요
저렇게 하려면 별도로 함수를 만들어야 할듯 보입니다.
저렇게 하려면 별도로 함수를 만들어야 할듯 보입니다.
�
플라이
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 문에 넣어 중복된 개수만큼 카운팅 해서 반환해 주는 방식으로 처리하시는 방법으로 적용이 필요할듯 합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인