[프로그래머스] 프린터

kjh1551·2020년 9월 25일
0

알고리즘 풀이

목록 보기
14/14
post-thumbnail

def solution(priorities, location):
    answer = 0
    result = []
    copy = []
    
    for i in range(len(priorities)):
        copy.append([i, priorities[i]])
      

    while(len(copy) > 0):
        
        new_list = sorted(copy, key=lambda x: x[1], reverse=True)
        m = new_list[0][1];

        if  copy[0][1] < m :
            copy.append(copy[0]);
            copy.remove(copy[0]);
        
        else :
            result.append(copy[0]);
            copy.remove(copy[0]);
    
    for i in result:
        if i[0] == location:
            return result.index(i)+1

풀이

  1. 인덱스와 값을 가진 새로운 이차원 리스트인 copy 를 만든다.
  2. 이차원 배열의 값 부분을 내림차순으로 정렬하여 max 값을 지정한다.
  3. 만약 max 값보다 크다면 result 배열에 옮겨담는다.
  4. max 값보다 작으면 맨뒤로 옮긴다.
  5. 그럼 result 값에 순서대로 담겨져있을것이다.
  6. 이때 주어진 location과 인덱스값이 같다면 해당 값이 담긴 인덱스를 출력한다.

다른 사람의 풀이를 보니까 나처럼 max 를 쓰지않고도 any 라는 함수로 비교할 수 있었다.
문제 이해가 더 빨랐으면 이것보다 간단하게 짤 수 있었을것 같기도 하다..ㅠㅠ


배운점

  1. 이차원배열에서 원하는 값으로 정렬하기
  2. 파이썬의 any 함수

0개의 댓글