안녕하세요~
27년차 진로탐색꾼 조녁입니다!
1일 1코테 23일차! 고득점 Kit 에서 스택/큐 테마 문제 풀어보았습니다.
시간이 너무 길어져서 시간을 줄이는 연습을 했는데 그게 되려 답을 보는 안좋은 습관이 생겨버렸습니다 ㅠㅠ
계속 편하게 답을 보게되니 생각을 깊이 안하려 하는 경향이 생기는 것 같더라구요!!
그래서 이제는 답을 최~대한 안보고 만약 보면 오답노트하는 심정으로 손코딩 3회 하려고 합니다!!
(응용수학과에겐 익숙합니다 손으로 쓰는거 .. 은근 효과있어요!)
· 문제명 : 기능개발
· 사용 언어 : Python3
· 난이도 : Level2
· 문제 설명
programmers.co.kr/learn/courses/30/lessons/42586
정답 코드
#구하고자 하는 것 : 맨앞에꺼가 종료되는 시점에 종료된 갯수 / 이후 종료된거 제거하고 다시 실행
#중요한 점: 자기 앞에꺼가 종료안되어있으면 종료안된다. -> 순서대로 따져봐야한다.
#각각 끝나기까지 걸리는 시간을 계산해준다.
import math
def solution(progresses,speeds):
answer = []
#끝나기까지 걸리는 시간
time = [math.ceil((100-x)/y) for x,y in zip(progresses,speeds)]
while len(time)!=0:
cnt = 1
c = time.pop(0) #기준을 잡아주네
time1 = time.copy()
for i in range(len(time1)):
if c >= time[i]:
cnt +=1
time1.pop(0)
else:
break
answer.append(cnt)
time = time1
return answer
<배운점 정리 >
1. math 모듈
-ceil() : 올림을 해준다. 여기선 2.3번 더해야하는 양이 남아도 결국 3번해야하는 거라서 올림해줬다.
2. while문 안에 for문을 썼다.
while문 안에 있는 for문을 통해, 끝나기까지 걸리는 시간을 나타내는 time array의 맨 앞에 요소가 없어질 때까지 돌렸다.
이 과정을 while문을 통해 time 안에 요소가 다 사라질때까지 반복해줬다.
계산한 cnt (for문이 도는 동안 기능개선이 완성된 갯수) 를 answer에 넣어줬다.
3. for문이 오류 안나도록 time1 = time.copy()
내가 제일 자주내는 오류중하나다. 만약 time으로만 진행했다면 for 문 도중 pop으로 범위 오류가 발생할 것이다.
그래서 for문이 도는 동안에 time1에서 pop을 진행하고 for문이 끝난 후에 time =time1 진행
https://link.coupang.com/a/rGILU
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'코딩테스트 준비 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 (0) | 2021.04.28 |
---|---|
[프로그래머스] 조이스틱 (0) | 2021.04.07 |
[프로그래머스] 가장 큰 수 (0) | 2021.04.02 |
[프로그래머스] 실패율 (0) | 2021.03.30 |
[프로그래머스][1차]비밀지도 (0) | 2021.03.29 |