[프로그래머스] 기능개발 - python 파이썬

2024. 9. 4. 22:21·코딩테스트/프로그래머스

문제

 

 

 

이 문제는 전형적인 stack 문제다. 

 

앞의 작업이 현재 날짜를 기준으로 출시가 불가능 하다면 뒤의 작업이 출시가능해도 출시할 수 없는 시스템이라고 이해하면 된다.

 

일단 각 작업이 며칠을 기준으로 출시가 가능한지 구해서 stack에 저장해두었다

 

이때 유의할 점은 progresses 배열을 역순으로 순회하면서 저장해야 앞의 작업이 stack의 제일 윗부분에 쌓일 수 있다는 것이다.

 

#각 작업이 며칠 뒤 배포가 가능한지 저장 이때 앞의 작업이 나중에 쌓이도록 역순으로 저장
    for i in range(len(progresses)-1,-1,-1):
        tmp = (100-progresses[i]) // speeds[i]
        if (100-progresses[i]) % speeds[i] != 0:
            tmp += 1
        stack.append(tmp)

 

이런식으로 (100-작업진도)/작업속도 를 해주는데 나누어 떨어지지 않는다면 1을 더해서 저장해 주었다.

 

 

이후 이 stack을 pop을 통해 앞의 작업부터 순서대로 출시가 가능한지 여부를 따져가며 answer에 저장해주면 된다.

 

 

 

정답코드

 

def solution(progresses, speeds):
    answer = []
    stack = []
    
    #각 작업이 며칠 뒤 배포가 가능한지 저장 이때 앞의 작업이 나중에 쌓이도록 역순으로 저장
    for i in range(len(progresses)-1,-1,-1):
        tmp = (100-progresses[i]) // speeds[i]
        if (100-progresses[i]) % speeds[i] != 0:
            tmp += 1
        stack.append(tmp)

    day = 0
    while(stack):
        day += 1
        ans = 0
        now = stack.pop()
        #현재 작업이 오늘 날짜에 출시가능하다면
        if now <= day:
            ans += 1
            #뒤의 작업이 남아있을 때
            if stack:
                while(stack):
                    nxt = stack.pop()
                    #뒤의 작업이 오늘 같이 출시 가능할 때
                    if nxt <= day:
                        ans+=1
                    #뒤의 작업이 오늘 출시 불가능 할 때
                    else:
                        stack.append(nxt)
                        break        
            answer.append(ans)
        else:
            stack.append(now)
                
            
    
    return answer

 

 

 

현재 작업이 출시가 가능해서 같이 출시가능한 뒤의 작업을 살필때 비어있는 stack에서 pop을 하지 않도록 예외처리하는 부분이 중요하다.

그리고 만약 출시가 불가능하다면 pop했던 것들을 다시 append 해주는 것도 중요하다

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 타겟넘버 - python 파이썬  (2) 2024.10.16
[프로그래머스] 다리를 지나는 트럭 - python 파이썬  (0) 2024.10.04
[프로그래머스] 입국심사 - python 파이썬  (1) 2024.08.28
[프로그래머스] 단속 카메라 - python파이썬  (4) 2024.08.27
[프로그래머스] 구명보트 - python파이썬  (1) 2024.08.21
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 타겟넘버 - python 파이썬
  • [프로그래머스] 다리를 지나는 트럭 - python 파이썬
  • [프로그래머스] 입국심사 - python 파이썬
  • [프로그래머스] 단속 카메라 - python파이썬
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    깃허브
    python
    AWS
    bastion host
    알파코
    알고리즘
    알파코캠퍼스
    백트래킹
    그리디
    투포인터
    백준
    백엔드
    프로그래머스
    코딩테스트
    파이썬
    BFS
    신한투자증권
    K디지털트레이닝
    Java
    IT기획
    프로디지털아카데미
    spring
    UnionFind
    EC2
    kdt교육
    MSA
    github
    다익스트라
    프디아
    코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[프로그래머스] 기능개발 - python 파이썬
상단으로

티스토리툴바