8989번 - 시계
우선 문제 번역하면서 풀다가 질문드리는거라 문제 자체는 원문인 점 양해부탁드립니다.
요약해서 간략히 문제를 설명하면, 인풋 첫줄에 테스트케이스 수가 들어오고 그 다음부터 각 줄에 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 이 됩니다)
당연히 각도 구하는 부분이 제일 난제이고 이 부분은 아래와 같은 알고리즘으로 구했습니다.
이대로 해서 아래와 같은 코드를 작성하였고, ACM-ICPC Live Archive 2807-Clock 에서는 Accept를 받았습니다.
그런데 여기서 제출해보니 계속 틀렸습니다가 나와서 수정을 계속 해봐도 도저히 갈피를 못 잡겠습니다...
고수님들 도와주세요 ㅠㅠ
검토해주셔서 감사합니다!
저도 수정해볼때 정수형으로 제출도 해봤었는데도 안됬었는데 저만 그런게 아니였네요 ㅎㅎ..
댓글을 작성하려면 로그인해야 합니다.
occidere 7년 전 1
우선 문제 번역하면서 풀다가 질문드리는거라 문제 자체는 원문인 점 양해부탁드립니다.
요약해서 간략히 문제를 설명하면, 인풋 첫줄에 테스트케이스 수가 들어오고 그 다음부터 각 줄에 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 이 됩니다)
당연히 각도 구하는 부분이 제일 난제이고 이 부분은 아래와 같은 알고리즘으로 구했습니다.
이대로 해서 아래와 같은 코드를 작성하였고, ACM-ICPC Live Archive 2807-Clock 에서는 Accept를 받았습니다.
그런데 여기서 제출해보니 계속 틀렸습니다가 나와서 수정을 계속 해봐도 도저히 갈피를 못 잡겠습니다...
고수님들 도와주세요 ㅠㅠ