코테 준비하기

프로그래머스 : 프로세스 42587

케케_ 2024. 9. 23. 13:56

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

 

프로그래머스

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

programmers.co.kr

 

 

이번 문제는 며칠동안 제대로 못풀어서 바로 풀이를 봤다...ㅜ

배열을 새로 생성해서 반복문을 돌며 pop과 push를 쓰면 간단히 풀릴거라고 생각했는데, 풀다보니 예상치 못한 경우가 발생해 코드가 길어지고 복잡만 해졌다.,

특정 프로세스가 앞쪽에 있지만, 우선순위가 높지 않은 경우 뒤로 옮기는 과정에서 인덱스의 변화로 복잡해졌다.

 

 

다른 분들의 풀이 코드 -1 

def solution(priorities, location):
    queue =  [(i,p) for i,p in enumerate(priorities)]
    answer = 0
    while True:
        cur = queue.pop(0)
        if any(cur[1] < q[1] for q in queue):
            queue.append(cur)
        else:
            answer += 1
            if cur[0] == location:
                return answer

priorities = [1,1,2,2,4,5,6]
location = 3
print(solution(priorities, location))
  • 포인트 1 : 튜플 사용
    • 고유의 인덱스 번호를 저장해 둘 수 있음 -> 즉, 고유의 인덱스 값은 가지면서 위치를 옮길 수 있음
    •  위의 특성으로 cur[0] == location을 통해 반복문을 끝냄
  • 포인트 2 : any() 함수
    • 하나라도 참이면 ture
    • 리스트의 값을 하나씩 가져와 검사할 값보다 큰게 하나라도 있는지 체크

 

이거 어떻게 생각해내는 건데요,,,ㅠ