Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- GCP
- go
- java
- Backjoon
- Singleton Pattern
- github
- golang
- 파이썬
- easy
- KAKAO
- Programmers
- mobaXTerm
- Top-down
- Observer Pattern
- Dynamic Programming
- LeetCode
- cpu scheduling
- GKE
- k8s
- 알고리즘
- docker
- Codility
- Python
- BubbleSort
- 백준
- 그리디
- Kotlin
- kubernetes
- 피보나치
Archives
- Today
- Total
To Be Developer
[Codility] Max Counter (Python) 본문
https://app.codility.com/programmers/lessons/4-counting_elements/
def solution(N, A):
# N 개의 원소를 가지고 있는 list 생성
li = [0] * N
# N+1 이 나왔을 때의 max 값
mx = 0
# 현재의 max 값
preMx = 0
# A의 원소를 하나하나 반복
for i in A:
# 원소가 N+1 이면 현재 최대 값을
# mx 변수에 대입하여 N+1 이 실행됬는지 확인
if i == N+1:
mx = preMx
# 1<=i<=N 인 경우
else :
# N+1 이 나온 경우 모든 원소들이 mx로 치환 됨
# 매번 바꾸는 것이 아니라 li[i-1]이 mx 값보다 작을 때
# 대입하고 나중에 최종적으로 한번만 더해줌
# 매번 바꾸게 되면 O(N^2) 이지만
# 나중에 한번 바꾸면 O(N+M)
if li[i-1] < mx :
li[i-1] = mx
# i-1 의 인덱스를 1증가
li[i-1] +=1
# 현재 최대 값을 연산
if preMx < li[i-1]:
preMx = li[i-1]
print(li)
# N 만큼 반복
for i in range(N):
# 만약 N+1 발생된 mx 값보다 li[i] 가 작으면
# mx를 대입해줌
if li[i] < mx :
li[i] = mx
# li return
return li
lst = [3,4,4,6,1,4,4]
print(solution(5,lst))
'알고리즘 > Codility' 카테고리의 다른 글
[Codility] Frog River One (Python) (0) | 2019.03.30 |
---|