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