목차
- 프린터
- 탑
- 쇠막대기
- 다리를 지나는 트럭
- 기능개발
- 주식가격
1. 프린터
def solution(priors, location):
# 인덱스 기억
result = []
for i in range(len(priors)):
priors[i] = (priors[i], i)
while priors:
if(len(priors) <= 1):
result.append(priors[0])
priors.pop(0)
elif(0 == priors.index(max(priors, key=lambda x: x[0]))):
result.append(priors.pop(0))
else:
priors.append(priors.pop(0))
for i in range(len(result)):
if(result[i][1] == location):
return i+1
print(solution([1, 1, 9, 1, 1, 1], 1))
다른 사람 풀이
def solution(p, l):
i = 0
m = max(p)
while True:
v = p.pop(0)
if m == v:
i += 1
if l == 0:
break
else:
l -= 1
m = max(p)
else:
p.append(v)
if l == 0:
l = len(p)-1
else:
l -= 1
return i
2. 탑
def solution(height):
result = [0] * len(height)
for i in range(len(height)-1, 0, -1):
for j in range(i-1, -1, -1):
if height[i] < height[j]:
result[i] = j+1
break
return result
print(solution([6, 9, 5, 7, 4]))
3. 쇠막대기
def solution(arrangement):
answer = 0
stack = []
for i, x in enumerate(arrangement):
if x == '(':
stack.append(i)
else:
stack.pop()
if arrangement[i-1] == ')':
answer += 1
else:
answer += len(stack)
return answer
print(solution("()(((()())(())()))(())"))
4. 다리를 지나는 트럭
def solution(bridge_length, weight, truck_weights):
q = [0] * bridge_length # 다리 초기화
sec = 0
while q:
sec += 1 # 시간의 경과 표시
q.pop(0)
if truck_weights:
if sum(q) + truck_weights[0] <= weight:
q.append(truck_weights.pop(0))
else:
q.append(0)
return sec
5. 기능 개발
import math
def solution(progresses, speeds):
mid = []
result = []
for x, y in zip(progresses, speeds):
z = math.ceil((100-x)/y)
mid.append(z)
front = 0
print(mid)
for i in range(len(mid)):
if mid[front] < mid[i]:
result.append(i-front)
front = i
result.append(len(mid)-front)
return result
print(solution([93, 30, 55], [1, 30, 5]))
if mid[front]<mid[i]:
가 관건이다.
6. 주식가격
def solution(prices):
result = []
for idx, x in enumerate(prices):
num = 0
for j in range(idx+1, len(prices)):
if x <= prices[j]:
num += 1
else:
num += 1
break
result.append(num)
return result
print(solution([1, 2, 3, 2, 3]))
- 정말 어려웠는데, 다시보니 그 때 얼마나 힘들게 고민했던 기억이 떠올랐다. 그래서, 뭐가 문제였는지 기억할 수 있었다.
참고자료 [프로그래머스]https://programmers.co.kr/learn/challenges