관리 메뉴

솜씨좋은장씨

[Programmers] 진료순서 정하기 (Python) (feat.ChatGPT) 본문

Programming/코딩 1일 1문제

[Programmers] 진료순서 정하기 (Python) (feat.ChatGPT)

솜씨좋은장씨 2023. 4. 10. 13:33
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 프로그래머스의 진료순서 정하기 입니다.

 

프로그래머스

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

programmers.co.kr

👨🏻‍💻 문제 풀이 - 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회차

  1. sorted() 함수를 사용하여 입력받은 emergency 리스트를 내림차순으로 정렬합니다.
  2. 리스트 컴프리헨션을 사용하여, 각 원소의 응급도가 높은 순서대로 번호를 부여합니다. 이를 위해 index() 함수를 사용하여 각 원소가 정렬된 리스트에서 몇 번째 위치에 있는지를 찾고, 1을 더하여 인덱스를 번호로 변환합니다.
  3. 부여한 번호를 담은 리스트를 반환합니다.

👨🏻‍💻 코드 (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회차 - 더 성능 좋은 코드 실패!

  1. enumerate() 함수를 사용하여 각 원소와 인덱스를 쌍으로 묶은 이터레이터를 생성합니다.
  2. sorted() 함수를 사용하여 이터레이터를 내림차순으로 정렬합니다. 이때 key 옵션을 사용하여 정렬 기준을 설정합니다. 람다식을 사용하여 각 쌍 중에서 두 번째 원소에 대해 내림차순으로 정렬합니다.
  3. 리스트 컴프리헨션을 사용하여 정렬된 이터레이터에서 인덱스만 추출하여 1을 더한 리스트를 생성합니다.

👨🏻‍💻 코드 (Solution)- ChatGPT - 2회차 - 더 성능 좋은 코드 실패!

def solution(emergency):
    return [i+1 for i, x in sorted(enumerate(emergency), key=lambda x: -x[1])]

더 성능 좋은 코드는...!

몇몇 케이스에서 실패하여

이 실패한 입력값과 기댓값을 알려주고 다시 풀어봐 달라고 했으나...!

계속 같은 코드를 알려주어 너무 아쉬웠습니다.

 

읽어주셔서 감사합니다.

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments