글 작성자: 택시 운전사
반응형

🖨 프린터 문제 풀어보기

😃 나의 코드

def solution(priorities, location):
    pos = []
    for i in range(len(priorities)):
        if i == location:
            pos.append(True)
        else: pos.append(False)
    answer = 0
    count = 0
    m = max(priorities)
    while True:
        if m > priorities[0]:
            priorities.append(priorities.pop(0))
            pos.append(pos.pop(0))
        else:
            count += 1
            priorities.pop(0)
            if pos.pop(0):
                return count
            m = max(priorities)

스택(stack)/큐(queue) 자료구조에 속하는 문제입니다. location의 위치를 계속 알고 있으면서, 전체에서 가장 큰 원소인 지 아는 것을 하나의 배열로 해결하는 건 매우 어렵습니다. 저는 두 가지 정도의 방법이 생각났습니다. location의 위치를 값으로 놓고 시행에 따라 location의 위치를 따라가는 방식과 priorities와 같은 길이의 location의 위치에 True를 이외에는 False의 값을 갖는 pos라는 list를 만들어 만약 pos에서 지워지는 값이 True라면 그 때의 count 값을 반환하는 방식입니다. 제 코드는 후자의 방식이고 전자의 방식의 코드는 다음과 같습니다.

def solution(p, l):
    ans = 0
    m = max(p)
    while True:
        v = p.pop(0)
        if m == v:
            ans += 1
            if l == 0:
                break
            else:
                l -= 1
            m = max(p)
        else:
            p.append(v)
            if l == 0:
                l = len(p)-1
            else:
                l -= 1
    return ans

Written with StackEdit.

반응형