티스토리 뷰

💡 문제 해결 아이디어

  • 간단한 듯 하지만, 놓치기 쉬운 부분들이 많은 문제 같다! 😂
  • 팁1: 리스트에서 lst.pop(0)를 하면 맨 앞의 요소를 꺼낼 수 있다.
  • 팁2: if문 등에서 빈 리스트는 False, 뭔가 하나라도 들어있는 리스트는 True로 판단한다.
  • 팁3: zip을 이용하면 길이가 같은 리스트나 튜플 등을 묶을 수 있다.
  • 아래 예제들이 이해와 풀이에 도움이 되었으면 좋겠다!!
  • 풀이 코드는 내리면 있습니다 :)

pop 사용 예제 / not 사용 예제.
zip 사용 예제.

💻 작성된 코드

def solution(priorities, location):
    
    # 우선순위와 인덱스 묶어서 저장
    lst = [[p, i] for p, i in zip(priorities, range(len(priorities)))]
    
    # 몇번째로 인쇄되는지 count.
    cnt = 1
    # 대기열에 문서가 있는 동안,
    while lst:
        # 대기열 맨 앞의 문서를 일단 꺼낸다.
        prior, idx = lst.pop(0)
        # 만약, 대기열에 문서가 없다 or 우선순위가 대기열 최대값 이상인 경우,
        if not lst or prior >= max([p for p, _ in lst]):
            # 내 문서면 return cnt
            if idx == location:
                return cnt
            # 아닌 경우, cnt + 1
            cnt += 1
        # 최대값 미만이면 맨 뒤로 다시.
        else:
            lst.append([prior, idx])
댓글