[2021-07-25] 기능개발 (lv2)
2021. 7. 25. 20:35ㆍ코딩테스트
푼 시간 : 50분
언어 : 자바
https://programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
스택 큐 활용해야되서 했는데,
오히려 다른데서 함정에 빠져버렸다.
작업량이 끝내려니까 자꾸 하나가 안더해져서
계속 골치였는데, 그냥 잠깐 노래듣다보니
마지막에 더하면 되는데 왜 굳이 못 더할까?
이런 생각이 들었다.
끝에 바로 더해버렸다.
def solution(progresses, speeds):
answer = []
count=0
while progresses:
if progresses[0]<100:
# 작업량이 100이 안됐을때
for i in range(0, len(progresses)):
progresses[i]=progresses[i]+speeds[i]
# 작업 전체에 계속 더한다
if count>0:
# 작업 끝난 수를 표시
answer.append(count)
# 끝난 작업들을 모아 answer에 더한다
count=0
else:
# 작업량이 100이 된 것만
progresses.pop(0)
speeds.pop(0)
count+=1
# 작업 끝난 수를 더하기
answer.append(count)
# 작업 량 하나를 answer에 못 더한것을 더한다
return answer
문제 푸는 언어를 그냥 파이썬으로 바꿔버렸다.
카카오페이 코딩테스트를 풀어보니 자바보다 파이썬이 문제풀이로는 제격인 것 같다.
더 좋은게 있는데 왜 아직까지 안 썼을까..
def solution(progresses, speeds):
answer = []
count=0
time=0
while progresses:
if progresses[0]+(time*speeds[0])<100:
# 아예 time으로 시간을 더해버렸다
if count>0:
# 카운트가 클 경우는 답에 더해줘야된다
answer.append(count)
count=0
time+=1
else:
progresses.pop(0)
speeds.pop(0)
count+=1
answer.append(count)
return answer
코드를 다시 짜서 보는 경우가 없는데
요새 시간 복잡도가 중요한 것 같아 다른 사람들의 풀이를 보고
나도 for문을 없앰으로써 n^2이 아니라 n+1으로 고쳤다.
'코딩테스트' 카테고리의 다른 글
[2022-03-24] 유기농 배추 (0) | 2022.03.24 |
---|---|
[2021-09-10] 복서 정렬하기 (0) | 2021.09.11 |
[2021-07-13] 예산 (0) | 2021.07.13 |
[2021-07-12] 숫자 문자열과 영단어 (0) | 2021.07.12 |
[2021-06-15] 내적 (0) | 2021.06.15 |