https://www.acmicpc.net/problem/8989
5개의 시간(시계)을 입력받고, 시계의 시침과 분침이 이루는 각도 (두 각도 중 작은 각도)를 구해서 오름차순으로 나열한다. 5개 중 가운데(3번째) 위치하는 시간을 찾는 문제이다. 시침과 분침이 가리키는 각도를 계산하는 문제라고 할 수 있다.
코드가 많이 지저분하지만, 리뷰도 할겸 최초 제출 코드로 올려본다. 분침이 가리키는 각도는 그 숫자에 비례하기 때문에 쉽게 생각할 수 있고, 시침은 분과 연계해서 생각해야한다. 1분이라도 지나면 시침도 소폭 이동하기 때문이다.
각도를 계산하는 식은 의외로 금방 떠올렸지만, 정렬하는 부분에서 많은 시간을 소요했다. 해당 각도와 그 시간을 딕셔너리로 만든 후에 key값 오름차순 -> value값 오름차순 순서로 정렬하려 했다. 근데 이런 방법은 없는 것 같다. (혹시 있다면 알려주세요!)
그냥 이차원 리스트로 만들면 되는거였는데, 너무 어렵게 생각했다. lambda 함수를 만들어서 각도를 오름차순 정렬한 후에, 각도가 같은 경우를 대비하여 시간도 정렬해줬다.
하지만 결과적으로는 lambda 함수도 필요 없었다. 단순히 sort()를 사용하면, 인덱스 순서대로 우선순위를 두어 자동 정렬이 된다.
'Koala - 7기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 15351번 : 인생점수 (0) | 2022.08.22 |
---|---|
백준[Python/3029번] (0) | 2022.08.22 |
[백준/Python] 5598 카이사르 암호 (0) | 2022.08.21 |
[백준/python] 2480번 주사위 세개 (0) | 2022.08.21 |
[백준/Python] 10974 모든 순열 (0) | 2022.08.19 |