배열 갯수 확인

배열 갯수 확인

QA

배열 갯수 확인

본문

[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]
*/

$arr = array_count_values(배열);

 

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

 

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


$myTest = array(1,1,1,0,1,1,0,0);

foreach($myTest as $myTest_value)
{
    echo $myTest_value, "\n";
}


이런식으로 연속값을 카운팅 하도록 foreach 문에 넣어 중복된 개수만큼 카운팅 해서 반환해 주는 방식으로 처리하시는 방법으로 적용이 필요할듯 합니다.

[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

답변을 작성하시기 전에 로그인 해주세요.
전체 123,783 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT