문자 형식 배열의 경우의 수
본문
gr_a 부터 gr_u 까지 22개의 문자 그룹이 있습니다. 각 그룹은 2개씩의 숫자를 배열로 포함하고 있고요.
이것을 3그룹씩 조합해 총 1,540개의 조합을 생성하려고 하는데 어떤식으로 접근할지 모르겠습니다.
a-b-c, a-b-d, a-b-e .... a-c-d, a-c-e ... (A로 시작 - 210개 조합 발생)
b-c-d, b-c-e, b-c-f .... b-d-e, b-d-f ... (B로 시작 - 190개 조합 발생)
c-d-e, c-d-f, c-d-g .... c-e-f, c-e-g ... (C로 시작 - 171개 조합 발생)
..
..
t-u-v (T로 시작 - 1개 조합 발생)
(총 1,540개 조합 발생)
아래처럼 접근할 경우,
array() 내용을 위 조합 예시처럼 유기적으로 변동할 수 있을까요? 아니면 문자열을 숫자로
치환하거나 이것도 안된다면 노가다로 1540개의 배열을 작성해야할지..;;
for ($i=1; $i <= 1540; $i++) {
${'combin'.$i.'_arr'} = array( $gr_a[0],$gr_a[1],$gr_b[0],$gr_b[1],$gr_c[0],$gr_c[1] );
}
답변 1
$pool = range('a', 'v');
$len = count($pool);
$res = [];
for($i=0; $i<$len; $i++) {
for($j=$i+1; $j<$len; $j++) {
for($k=$j+1; $k<$len; $k++) {
$res[] = sprintf('%s-%s-%s', $pool[$i], $pool[$j], $pool[$k]);
}
}
}
이렇게 하시면 될듯요.
!-->
답변을 작성하시기 전에 로그인 해주세요.