강의로 돌아가기
신종민

전에 질문했었고 답변을 받아 처리해봤습니다만

강사님께서 알려주시기 전에는
이렇게 짰었는데

def solution(L, x):
    # index를 담을 리스트
    index_list = []
    L_cnt = len(L)
    # list를 순회하면서 index()를 이용해서 값을 찾음.
    while(L_cnt > 0):
        try:
            index = L.index(x)
            del(L[index])
            length = len(index_list)
            if length > 0:
                index = index + length
            index_list.append(index)
        except ValueError:
            pass
        L_cnt -= 1
    if len(index_list) ==0:
        index_list.append(-1)
    return index_list

말씀해주신대로 해서
아래와 같이 처리했습니다.
혹시나 아래의 두 코드 (주석처리 한것과 안한것)들을
좀 더 보완할 방법은 뭐가 있을지 궁금해서 다시 질문 올립니다.

(전에 답변해주셔서 너무 많은 도움이 됐습니다 감사합니다)

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def solution(L, x):
    index_list = []
    start = 0
    while x in L:
        # 전체 리스트에서 index 값
        c_idx = L.index(x)
        idx = c_idx + start
        index_list.append(idx)
        sp = c_idx + 1
        start = idx + 1

        if sp >= len(L):
            break

        L=L[sp:]
    if len(index_list) == 0:
        return [-1]
    return index_list

# def solution(L, x):
#     index_list = []
#     cnt = 0
#     for int in L:
#         if int == x:
#             index_list.append(cnt)
#         cnt +=1
#     if len(index_list) == 0:
#         return [-1]
#     return index_list
1 개의 답변
이시윤

조금 더 간략하게 코드를 표현하고 싶다면, L4 에 있는 x in Lx in L[...] (... 은 슬라이싱 문법 표현) 으로 하면 어떨까요? 변수의 사용을 줄일 수 있을 것입니다. 그리고 아무래도 sp 라는 변수와 start 라는 변수를 비슷한 용도로 사용한 점 (그 둘은 직접 연관이 있습니다), 그리고 c_idxidx 의 쌍 또한 그런 관계가 있는데, 이런 중복을 줄이는 것은 어떤가 싶어요. 그리고 순환문을 잘 구성한다면 break 를 사용하지 않을 수도 있을 것입니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.