Skip to content

스타 수열 (월간코드 챌린지1) #5

@sghong977

Description

@sghong977

#시도 1

  • 점수: 57.1
  • 오답은 없는데 모두 시간초과

image

현재 풀이 (예시: [5,2,3,3,5,3])

  • input array 원소 하나씩 조사함
  • 예를 들어, 첫 원소는 5니까 이거랑 값이 같은지 다른지를 bool연산으로 저장함. [1,0,0,0,1,0])
  • 인덱스 t, t+1이 다르면 +2 위치로 넘어가서 조사. 같으면 스타수열 길이에서 1을 빼고, +1 위치로 넘어가서 조사.
  • 끝나면 남은 스타수열 길이가 나옴.
  • 원소 돌아가면서 (중복인건 패스하고) 다 돌면 최대값이 나옴.

미리 제거할수 있는 경우가 또 없을까?
예를들어, 현재 스타수열 최대 길이 값이 2k라고 하면, 해당 원소 (예시:3)가 배열에 있는 개수가 k 미만이면 체크할 필요가 없다거나.

`

    def solution(a):
        checked_num = []
        max_len = -1
        # check one number
        for i in range(len(a)):
            if a[i] in checked_num:
                continue
            tmp_len = len(a)
            tmp = [j == a[i] for j in a]
            idx = 0
            for t in range(len(tmp)):
                if idx != t:
                    continue
                if (t+1) >= len(tmp):
                    tmp_len -= 1
                    break
                if (tmp[t] != tmp[t+1]):
                    idx += 2
                    continue
                else:
                    idx += 1
                    tmp_len -= 1
            if tmp_len > max_len:
                max_len = tmp_len
            checked_num.append(a[i])    
        answer = max_len
        return answer

`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions