테스트 사이트 - 개발 중인 베타 버전입니다

배열 갯수 확인 채택완료

웹랭귀지 2년 전 조회 1,946

[1,1,1,1,0,1,1,0,1,1]

같튼것 끼리의 갯수 확인이 되나요?

 

4,0,2,0,2

댓글을 작성하려면 로그인이 필요합니다.

답변 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>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

[1,1,1,1,0,1,1,0,1,1]

같튼것 끼리의 갯수 확인이 되나요?

4,0,2,0,2

==

같은 값을 갖는 원소의 갯수가 아니고

연이어 같은 것이 나오는 것을 코딩(run length coding)하는 거군요.

https://exercism.org/tracks/php/exercises/run-length-encoding/solutions/bf5a7cfe57af4e069d86cc0c972ef3fe

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

s
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">

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

플라이
2년 전

$arr = array_count_values(배열);

 

위 함수로 개수 확인이 가능합니다.

 

참고: https://solbel.tistory.com/1672

로그인 후 평가할 수 있습니다

답변에 대한 댓글 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 문에 넣어 중복된 개수만큼 카운팅 해서 반환해 주는 방식으로 처리하시는 방법으로 적용이 필요할듯 합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인