알고리즘 문제 풀이: 파이썬/Programmers

[프로그래머스] 달리기 경주

hueco 2023. 4. 15.

 

📌 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

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

programmers.co.kr

 

내 풀이(Success) :

 

🧐 Review:

 문제를 푸는 것은 오래걸리지 않았지만, 변수명을 정하는 것이 너무 힘들었다. 많은 변수를 사용한 것은 아니지만, 같은 변수의 이름을 몇 번이나 바꿨는지 모르겠다. 네이밍에 대한 고민은 개발자의 숙명인걸까?!

 

🚩 Idea:

 - callings와  players의 길이가 꽤 크다. 단순하게 계산해봐도 시간복잡도로 시간초과가 발생하기 쉽다는 생각이 든다.

 - 시간복잡도를 줄일 수 있는 방법을 고민하다가 딕셔너리를 이용하기로 결정했다.

 - 딕셔너리에서는 key를 알면 key에 대한 value를 O(1)의 시간복잡도를 이용해서 읽을 수 있기 때문이다.

 - 이름을 key로 갖는 딕셔너리와 등수를  key로 갖는 딕셔너리를 정의하고, for문을 돌면서 call되는 이름을 이용해 두 딕셔너리를 업데이트한다.

 - 파이썬 3.6에서는 딕셔너리가 순서를 기억하기 때문에 for 반복문이 종료되고 정렬없이 딕셔너리에서 이름을 꺼내 리스트로 리턴한다.

 

댓글