[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