본문 바로가기
Python/알고리즘

[COS PRO 1급 #4-9] 분침과 시침의 각도 구하기

by 포푸리 (POPOOLY) 2023. 3. 2.
반응형

문제설명

hour 시 minute 분에 아날로그 시계의 시침과 분침이 몇 도를 이루는지 계산하려 합니다. 예를 들어, 3시 00분에 시침과 분침은 90˚를 이룹니다.

어떤 시점의 시 hour, 분 minute이 매개변수로 주어질 때, hour 시 minute 분에 아날로그 시계의 시침과 분침이 이루는 각도를 소숫점 첫번째 자리까지 표현한 문자열을 return 하도록 solution 함수를 작성해주세요.

매개변수 설명

어떤 시점의 시 hour, 분 minute이 solution 함수의 매개변수로 주어집니다.

* hour는 1 이상 12 이하인 자연수입니다.
* minute은 0 이상 59 이하인 정수입니다.

return 값 설명

hour 시 minute 분에 아날로그 시계의 시침과 분침이 이루는 각도를 소숫점 첫번째 자리까지 표현한 문자열을 return 하세요.

* 단, 각도는 __소수점 이하 첫째 자리까지__ 표현하세요.

예시

| hour | minute | return |
|---|---|---|
| 3 | 0 | "90.0" |

예시 설명

앞서 설명한 예와 같습니다.

문제 코드

def solution(card, n):
    # 여기에 코드를 작성해주세요.
    answer = 0
    return answer

풀이 1

def solution(hour, minute):
	# 12시를 기준으로 분침과 시침의 각도 구하기
	degree_hour = 30*hour+0.5*minute
	degree_minute = 6*minute
    
	# 분침과 시침 사이의 각도 구하기
	if degree_hour >= degree_minute:
		answer = degree_hour - degree_minute
	else:
		answer = degree_minute - degree_hour
	return "{:.1f}".format(answer)

풀이 2

 

def solution(hour, minute):

    # 12시를 기준으로 분침과 시침의 각도 구하기
    hour_pos = float(hour) * 30.0 + float(minute) * 0.5
    minute_pos = float(minute) * 6.0
    
    # 분침과 시침 사이의 각도 구하기
    answer = abs(hour_pos - minute_pos)
    if answer > float(360) - answer :
        answer = float(360) - answer
    return "{:.1f}".format(answer)​

댓글