반응형
문제 접근
- 간단한 문제로 생각했으나 문제를 잘 못 파악한 것이 코드를 잘못작성하는 것으로 이어졌다.
- 문제파악을 잘하는 것이 중요할 것 같다
# https://programmers.co.kr/learn/courses/30/lessons/42586?language=python3
# 내가 푼 것 (1차)
from collections import deque
import math
from collections import deque
import math
def solution(progresses, speeds):
answer = []
q = deque()
time = 0 # 누적된 시간을 나타냄
for i in range(len(speeds)):
day = math.ceil((100 - progresses[i]) / speeds[i])
q.append(day) # 작업이 완료되는 일자를 q에 담음
print(q)
while q:
cnt = 0
first = q.popleft()
cnt += 1
if len(q) != 0:
while time + first >= q[0]: # time 제거가 정답 작업일이 누적된다고 생각해서 오류가 낫다 작업일 누적일이 아닌 처음 담기는 값을 생각했어야함
q.popleft()
cnt += 1
if len(q) == 0:
break
answer.append(cnt)
time += first
return answer
# 내가 푼 것 (2차)
import math
def solution(progresses, speeds):
answer = []
temp = []
time = 0 # 누적된 시간을 나타냄
count = 0 # 작업이 완료된 갯수
for i in range(len(speeds)):
v = math.ceil((100 - progresses[i]) / speeds[i])
temp.append(v) # 작업이 완료되는 일자를 temp에 담음
print(temp)
count = 0
p = temp[0] # 기준 작업일자를 계속 바꿔준다.
for i in range(len(temp)):
if p < temp[i]:
answer.append(count)
count = 0
p = temp[i]
count += 1
answer.append(count)
return answer
# 참고 답안
def solution(progresses, speeds):
answer = []
time = 0
count = 0
while len(progresses)> 0:
print(progresses[0] + time*speeds[0])
if (progresses[0] + time*speeds[0]) >= 100:
progresses.pop(0)
speeds.pop(0)
count += 1
else:
if count > 0:
answer.append(count)
count = 0
time += 1
answer.append(count)
return answer
초안
'코딩테스트 > 파이썬' 카테고리의 다른 글
[프로그래머스] 위장(level 2) (파이썬) (0) | 2021.05.18 |
---|---|
[프로그래머스] 다음 큰 숫자(level 2) (파이썬) (0) | 2021.05.18 |
[프로그래머스] 주식가격(level 2) (파이썬) (0) | 2021.05.07 |
[백준] 01타일 1920 (파이썬) (0) | 2021.03.19 |
[백준] N과 M (1) 15649 (파이썬) (0) | 2021.03.19 |