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

알고리즘 머리가 안돌아갑니다. ㅎ 혹시 쉽게 풀 수 있는 알고리즘이 있을까요? 채택완료

디스달나노 5년 전 조회 2,713

문제1)

$arr = ['A', 'A', 'B', 'B', 'A', 'B', 'A', 'C', 'C', 'C'];

무작위로 배열에 알파벳이 저장되어 있다.

 

다음과 같은 알파벳의 위치를 배열에 저장하시오.

단! 함수를 사용하여 배열의 리턴값을 받으시오.

 

$result = 함수($arr)

 

결과값 :

$result[0] = "A, 0, 1, 4, 6";

$result[1] = "B, 2, 3, 5";

$result[2] = "C, 7, 8, 9";

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

답변 4개

채택된 답변
+20 포인트

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

답변에 대한 댓글 1개

디스달나노
5년 전
넵~ 감사합니다. ㅎ A,B,C값이 다를 때도 적용되는 문법을 생각해볼게요.

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

한번 해보고 싶어서 답글 달아봐요 ㅋㅋ

</p>

<p>$arr = array('A', 'A', 'B', 'B', 'A', 'B', 'A', 'C', 'C', 'C');

function getItemIdx($arr){

 $new_arr = array_unique($arr);

 $result = array();

 foreach($new_arr as $key => $value){

  $new_array = array($value);

  $result[] = "[".implode(",",array_merge($new_array, array_keys($arr, $value)))."]";

 }

 return $result;

}

$result = getItemIdx($arr);

print_r2($result);</p>

<p>

//결과

Array
(
    [0] => [A,0,1,4,6]
    [1] => [B,2,3,5]
    [2] => [C,7,8,9]
)

 

이런식으로도 맞는건가요? ㅎ

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

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

I
5년 전

스포어의 humit 님께서 딕셔너리를 이용하여 저보다 훨씬 간결하고 파이써닉한 방법을 설명해주셨네요 :)

 

https://studyforus.com/index.php?document_srl=687025&comment_srl=687141&mid=tipnknowhow#comment_687141">https://studyforus.com/index.php?document_srl=687025&comment_srl=687141&mid=tipnknowhow#comment_687141

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

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

I
5년 전

안녕하세요??

 

이미 채택된 답변이 있지만

 

파이썬으로 A~Z까지 일반적으로 작동하도록 작성해봤어요 :)

 

</p>

<p>def func(list):</p>

<p>    res = []</p>

<p>    # A~Z까지 리스트 안의 리스트를 생성합니다.</p>

<p>    for i in range(26):</p>

<p>        res.append([chr(65 + i)])</p>

<p>    # 각 문자의 위치를 리스트에 넣습니다.</p>

<p>    for idx1, l in enumerate(list):</p>

<p>        res[ord(l) - 65].append(idx1)</p>

<p>    # 리스트 안의 리스트의 길이가 1인 경우를 제외하여 새 리스트를 생성합니다.</p>

<p>    final = [x for x in res if len(x) != 1]</p>

<p>    return final</p>

<p> </p>

<p>data = ['A', 'A', 'B', 'B', 'A', 'B', 'A', 'C', 'C', 'C']</p>

<p>result = func(data)</p>

<p>print(result)</p>

<p>

 

결과 : [['A', 0, 1, 4, 6], ['B', 2, 3, 5], ['C', 7, 8, 9]]

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

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

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

로그인