일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
Tags
- 자바
- heapq
- lambda
- divmod
- 파이썬
- 정규식
- KAKAO BLIND RECRUITMENT
- DateTime
- 이분탐색
- python
- Re
- Combinations
- backjoon
- 위클리 챌린지
- programmers
- 재귀함수
- 다익스트라
- Zip
- 백준
- java
- 동적 계획법
- 그리디
- BFS
- 수학
- 정렬
- 프로그래머스
- 카카오
- Set
- 추석맞이 코딩챌린지
- dfs
Archives
- Today
- Total
상상쓰
[프로그래머스] 스타 수열 본문
https://programmers.co.kr/learn/courses/30/lessons/70130
교집합이 될 수 있는 원소의 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