CS/Algorithm 문제

[Programmers] 프린터

[Programmers] 프린터

 

🎈문제

https://programmers.co.kr/learn/courses/30/lessons/42587

💬설명

  • 문제에 나와있는대로 그대로 구현하면 되는 문제
  • 인쇄에 순서가 있어서 스택/큐 문제라고 생각했다.
  • 과정은 다음과 같다.
    1. 문서를 앞에서부터 하나씩 뽑음 (while문)
    2. 지금 뽑은 문서가 최대값이라서 인쇄대상인 경우
      1. 만약 해당 문서가 내가 인쇄를 요청한 문서인 경우 누적된 횟수값 리턴후 종료
      2. 만약 해당 문서가 내가 인쇄를 요청한 문서가 아닌 경우 요청한 문서 위치값 update
    3. 지금 뽑은 문서가 최대값이 아니어서 뒤로 넘겨야 하는 경우
      1. 해당 문서가 내가 인쇄를 요청한 문서인 경우
        • 요청한 문서 위치값 맨 마지막으로 update
      2. 해당 문서가 내가 인쇄를 요청한 문서가 아닌 경우
        • 요청한 문서 위치값 앞으로 한칸 땡겨주기

👩‍💻코드

def solution(priorities, location):
    answer = 0
    
    while True:
        max_num = max(priorities)
        first = priorities.pop(0)
        
        # 지금 뽑은 문서가 최대값이라서 인쇄대상인 경우
        if first == max_num:
            answer += 1
            # 만약 해당 문서가 내가 인쇄를 요청한 문서인 경우
            if location == 0:
                return answer
            else:
                location -= 1
        # 지금 뽑은 문서가 최대값이 아니라서 뒤로 넘겨야하는 경우
        else:
            priorities.append(first)
            # 해당 문서가 내가 인쇄를 요청한 문서인 경우
            if location == 0:
                location = len(priorities) - 1
            else:
                location -= 1
        
    return answer

 

728x90
반응형

'CS > Algorithm 문제' 카테고리의 다른 글

[Programmers] 주식가격  (0) 2021.10.07
[Programmers] 다리를 지나는 트럭  (0) 2021.10.07
[Programmers] 기능개발  (0) 2021.10.07
[Programmers] 베스트앨범  (0) 2021.10.07
[Programmers] 위장  (0) 2021.10.07