프로그래밍/Python

프로그래머스_python lv0. 진료순서 정하기

O'bin 2023. 2. 5. 23:57

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

 

프로그래머스

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

programmers.co.kr

 

 

내 답안 : 

 

1
2
3
4
5
6
7
8
def solution(emergency):
    answer = []
    priority = sorted(emergency, reverse = True)    # emergency를 내림차순 정렬해서 priority에 넣음
    for eInEmer in emergency:                       # emergency의 요소에 차례로 접근하면서
        for eInPri in priority:                     # priority의 요소에도 차례로 접근
            if eInPri == eInEmer:                   # 만약 두 요소의 값이 같으면
                answer.append(priority.index(eInEmer)+1)    # 해당 요소의 인덱스값에 1 더해서 answer에 값 추가
    return answer
cs

 

꽤 시간 들여 고민함...

 

 

 

개선안 : 

 

1
2
def solution(emergency):
    return [sorted(emergency, reverse=True).index(e) + 1 for e in emergency]
cs

 

내 풀이와 방식은 똑같은데, comprehension 구조를 사용해 훨씬 짧은 코드가 된다.

파이썬 장점이 코드가 짧은 것도 있으니 이런식으로 작성하는것도 연습해야겠다.