Programming/코딩 1일 1문제
[Programmers] 진료순서 정하기 (Python) (feat.ChatGPT)
솜씨좋은장씨
2023. 4. 10. 13:33
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 프로그래머스의 진료순서 정하기 입니다.
👨🏻💻 문제 풀이 - SOMJANG
1. 먼저 응급도가 담겨져있는 리스트를 내림차순으로 정렬합니다.
2. 이렇게 만든 리스트로 숫자를 key 로 순번을 value 로 하는 dictionary 를 만들어줍니다.
3. 마지막으로 응급도 리스트에서 하나씩 숫자를 꺼내오면서 emergency_dict 에 응급도를 넣어 나오는 idx 를 모아 정답으로 합니다.
👨🏻💻 코드 (Solution)- SOMJANG
def solution(emergency):
sorted_emergency = sorted(emergency, reverse=True)
emergency_dict = {
num:idx for idx, num in enumerate(sorted_emergency, start=1)
}
return [emergency_dict[num] for num in emergency]
👨🏻💻 문제 풀이 - ChatGPT - 1회차
- sorted() 함수를 사용하여 입력받은 emergency 리스트를 내림차순으로 정렬합니다.
- 리스트 컴프리헨션을 사용하여, 각 원소의 응급도가 높은 순서대로 번호를 부여합니다. 이를 위해 index() 함수를 사용하여 각 원소가 정렬된 리스트에서 몇 번째 위치에 있는지를 찾고, 1을 더하여 인덱스를 번호로 변환합니다.
- 부여한 번호를 담은 리스트를 반환합니다.
👨🏻💻 코드 (Solution)- ChatGPT - 1회차
def solution(emergency):
sorted_emergency = sorted(emergency, reverse=True) # 응급도가 높은 순서대로 정렬
answer = [sorted_emergency.index(x)+1 for x in emergency] # 응급도가 높은 순서대로 번호 부여
return answer
제가 사용할까 고민했던 index를 활용해서 풀었습니다.
👨🏻💻 문제 풀이 - ChatGPT - 2회차 - 더 성능 좋은 코드 실패!
- enumerate() 함수를 사용하여 각 원소와 인덱스를 쌍으로 묶은 이터레이터를 생성합니다.
- sorted() 함수를 사용하여 이터레이터를 내림차순으로 정렬합니다. 이때 key 옵션을 사용하여 정렬 기준을 설정합니다. 람다식을 사용하여 각 쌍 중에서 두 번째 원소에 대해 내림차순으로 정렬합니다.
- 리스트 컴프리헨션을 사용하여 정렬된 이터레이터에서 인덱스만 추출하여 1을 더한 리스트를 생성합니다.
👨🏻💻 코드 (Solution)- ChatGPT - 2회차 - 더 성능 좋은 코드 실패!
def solution(emergency):
return [i+1 for i, x in sorted(enumerate(emergency), key=lambda x: -x[1])]
더 성능 좋은 코드는...!
몇몇 케이스에서 실패하여
이 실패한 입력값과 기댓값을 알려주고 다시 풀어봐 달라고 했으나...!
계속 같은 코드를 알려주어 너무 아쉬웠습니다.
읽어주셔서 감사합니다.