본문 바로가기
프로그래머스/Python

[프로그래머스] 프로세스 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 26.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 프로세스 중요도가 제일 큰 것부터 실행되어야 하므로 중요도가 제일 큰 프로세스를 찾아 실행 시작 위치를 저장한다. place = priorities.index(max(priorities))
  2. 원하는 답을 구할 때 프로그램을 중단하기 위해 무한 반복문을 사용한다. while (True)
  3. 중요도가 가장 큰 프로세스의 중요도 값을 저장한다. value = max(priorities)
  4. 만약 현재 실행할 순서의 프로세스의 중요도가 가장 큰 중요도이면 if (priorities[place] == value)
  5. 해당 프로세스의 중요도 값을 0으로 바꿔주고 priorities[place] = 0
  6. 프로세스가 하나 실행되었으므로 실행 순서를 1 증가시킨다. answer += 1
  7. 만약 실행 시킨 프로세스와 실행 순서를 찾으려고 하는 프로세스가 동일하면 if (place == location)
  8. 정답을 찾았으므로 종료한다. break
  9. 프로세스를 실행하던, 실행하지 않던 순서를 다음 순서로 옮긴다. place += 1
  10. 만약 프로세스의 순서가 끝까지 간다면 if (place >= len(priorities))
  11. 다시 제일 앞으로 순서를 옮긴다. place = 0
반응형

3. 소스코드

def solution(priorities, location):
    answer = 0
    
    place = priorities.index(max(priorities))
    while (True):
        value = max(priorities)
    
        if (priorities[place] == value):
            priorities[place] = 0
            answer += 1
            
            if (place == location):
                break

        place += 1
        if (place >= len(priorities)):
            place = 0
    
    return answer
728x90
반응형