[Codility/Lesson7]Stonewall(python)
| 1트
import collections
def solution(H):
queue = collections.deque([])
count = 0
for hei in H:
if queue:
if hei < queue[0]:
before_num = 0
temp_count = 0
temp_hash = collections.defaultdict(int)
while queue:
if queue[0] > before_num:
temp_count += 1
elif queue[0] < before_num and temp_hash[queue[0]] == 0:
temp_count += 1
before_num = queue.popleft()
temp_hash[before_num] = 1
count += temp_count
queue.append(hei)
else:
queue.append(hei)
temp_hash = collections.defaultdict(int)
before_num = 0
while queue:
if queue[0] > before_num:
count += 1
elif queue[0] < before_num and temp_hash[queue[0]] == 0 :
count += 1
before_num = queue.popleft()
temp_hash[before_num] = 1
return count
- 기준을 min값으로 고정시키고 풀어서 풀이가 복잡하고 놓치는 부분이 있었다
| 2트
def solution(H):
stack = []
count = 0
for hei in H:
while stack and stack[-1] > hei:
stack.pop()
if not stack or stack[-1] < hei:
stack.append(hei)
count += 1
return count
- 기준을 그때그때 변경하도록 했다
- 위처럼 풀면 같은 값에 대해서는 고려하지 않아도 된다
Author And Source
이 문제에 관하여([Codility/Lesson7]Stonewall(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zzarbttoo/CodilityLesson7Stonewallpython저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)