occidere   7년 전

우선 문제 번역하면서 풀다가 질문드리는거라 문제 자체는 원문인 점 양해부탁드립니다.

요약해서 간략히 문제를 설명하면, 인풋 첫줄에 테스트케이스 수가 들어오고 그 다음부터 각 줄에 06:05, 07:10, 03:00, 21:00, 12:55 처럼 5개의 시간 정보가 공백으로 구분되어서 들어옵니다.

이 들어온 시간 정보를 바탕으로 시침과 분침이 이루는 각도 중 제일 작은 각도(0 이상, 180 이하)를 구한 뒤, 이 각도들을 기준으로 오름차순 정렬을 합니다.

만약, 각도가 같은 시간들이 있으면, 빠른 시간이 앞에 오도록 정렬합니다.

즉,

 1. 시침과 분침이 이루는 각도 중 제일 작은 각도를 기준으로 오름차순 정렬

 2. 각도가 같다면 빠른 시간이 앞에 오도록 오름차순 정렬 (시간이 같으면 -> 분을 기준으로 정렬)

과 같이 수행하면 됩니다.

이후 정렬이 끝나면 가운데 위치한 값을 선택해 출력하면 되는 문제입니다.

(위의 예시를 기준에 맞춰 정렬하면 12:55, 03:00, 21:00, 06:05, 07:10 이 됩니다)


당연히 각도 구하는 부분이 제일 난제이고 이 부분은 아래와 같은 알고리즘으로 구했습니다.

clock.png

이대로 해서 아래와 같은 코드를 작성하였고, ACM-ICPC Live Archive 2807-Clock 에서는 Accept를 받았습니다.

그런데 여기서 제출해보니 계속 틀렸습니다가 나와서 수정을 계속 해봐도 도저히 갈피를 못 잡겠습니다...

고수님들 도와주세요 ㅠㅠ

dlwodnsdl   7년 전

부동소수점 오차때문에 안되는 것 같아서 각도에 2를 곱해서 정수형으로 비교했는데도, 틀렸다고 뜨네요.
정수형을 활용해서 ACMC-ICPC에서는 AC받았는데 여기서는 틀렸습니다가 뜨네요.  채점데이터에 이상이 있는 것 같아요.

occidere   7년 전

검토해주셔서 감사합니다!

저도 수정해볼때 정수형으로 제출도 해봤었는데도 안됬었는데 저만 그런게 아니였네요 ㅎㅎ..

댓글을 작성하려면 로그인해야 합니다.