상상쓰

[프로그래머스] 스타 수열 본문

Coding Test

[프로그래머스] 스타 수열

상상쓰 2021. 6. 18. 18:02

https://programmers.co.kr/learn/courses/30/lessons/70130

 

코딩테스트 연습 - 스타 수열

 

programmers.co.kr

 

교집합이 될 수 있는 원소의 index 를 가지고 스타 수열의 길이를 구한다.

 

스타 수열의 최대 길이를 구하려고 한다면 우선 교집합의 원소가 오른쪽에 오는 것을 우선으로 한다.

또한, 스타 수열의 항에서 교집합의 원소랑 아닌 원소랑은 가장 근접한 것을 우선으로 한다.

 

조건에 맞는 항을 구한 후, 항의 각 원소가 다르면 스타 수열의 길이가 2씩 늘어난다.

 

from collections import defaultdict

def solution(a):
    answer = 0
    dic = defaultdict(list)
    N = len(a)
    
    for i in range(N):
        dic[a[i]].append(i)

    for i in dic.keys():
        if answer // 2 >= len(dic[i]):
            continue
            
        else:
            b = 0
            c = 0
            
            for j in dic[i]:
                if b >= j:
                    if j + 1 <= N - 1 and a[j] != a[j+1]:
                        c += 1

                    b = j + 2 

                else:
                    if a[j-1] != a[j]:
                        c += 1

                    b = j + 1 

            answer = max(answer, 2 * c) 
                
    return answer

print(solution([0])) # 0

'Coding Test' 카테고리의 다른 글

[백준] 수리공 항승  (0) 2021.06.22
[백준] 보석 도둑  (0) 2021.06.21
[프로그래머스] 도둑질  (0) 2021.06.17
[백준] 저울  (0) 2021.06.17
[프로그래머스] 합승 택시 요금  (0) 2021.06.16
Comments