본문 바로가기
IT/알고리즘

프로그래머스-기능개발(파이썬)

by 어센트 2020. 6. 10.

코딩테스트 연습 - 기능개발

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 ��

programmers.co.kr

파이썬을 다시 공부한 뒤로 오랜만에 lv2문제를 풀어봤다.

역시 알고리즘 문제풀이에는 파이썬이 최고인것 같다.

리스트 형태를 pop(0)을 이용해 스택으로 문제를 해결했다.

배운 것 : list.pop(),list.pop(n)

풀이

def solution(progresses,speeds):
    lst = []
    ans = []
    for i in range(len(progresses)):
        temp = progresses[i]
        cnt = 0
        while temp<100:
            temp+=speeds[i]
            cnt+=1
        lst.append(cnt)

    while len(lst)!=0:
        temp = lst.pop(0)
        cnt = 1
        while len(lst)>0 and temp>=lst[0]:
            cnt+=1
            lst.pop(0)   
        ans.append(cnt)
    return ans
progresses = [93,30,55]
speeds = [1,30,5]
print(solution(progresses,speeds))

다른 사람 풀이

def solution(progresses, speeds):
    Q=[]
    for p, s in zip(progresses, speeds):
        if len(Q)==0 or Q[-1][0]<-((p-100)//s):
            Q.append([-((p-100)//s),1])
        else:
            Q[-1][1]+=1
    return [q[1] for q in Q]

zip이 뭔지 몰라서 공부했다.

zip()은 내장함수로 같은 길이의 리스트를 같은 인덱스끼리 잘라서 리스트로 반환을 해주는 역할을 한다. 상당히 유용하게 사용할 수 있는 내장함수다.