[Programmers] Level 2. 아날로그 시계

2025. 3. 26. 21:50·코딩테스트/Python
728x90
반응형

🔗 Problem Link

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


❔Thinking

  • 아날로그 시계에서, 초침이 주어진 시간 범위 내에서의 시침 또는 분침과 일치하는 횟수를 반환한다.
  • 두개의 바늘이 겹친다는 의미는, 하나의 바늘이 1초 후에 다른 바늘보다 앞선다는 뜻과 동일하다.
  • 00시와 12시는 모든 바늘이 겹치는 구간이기 때문에, 정확히 예외처리를 해야 한다.

💻Solution

def solution(h1, m1, s1, h2, m2, s2):
    cnt = 0
    init_time = h1*60*60 + m1*60 + s1
    end_time = h2*60*60 + m2*60 + s2

    if init_time == 0 or end_time == 60*60*12:
        cnt += 1
    
    for t in range(init_time, end_time):
        s_angle = (6*t) % 360
        m_angle = (t/10) % 360
        h_angle = (t/120) % 360
        
        next_s_angle = 360 if (6*(t+1)) % 360 == 0 else (6*(t+1)) % 360
        next_m_angle = 360 if ((t+1)/10) % 360 == 0 else ((t+1)/10) % 360
        next_h_angle = 360 if ((t+1)/120) % 360 == 0 else ((t+1)/120) % 360
        
        if s_angle < h_angle and next_s_angle >= next_h_angle:
            cnt += 1
        if s_angle < m_angle and next_s_angle >= next_m_angle:
            cnt += 1
        if next_s_angle == next_m_angle == next_h_angle:
            cnt -= 1

    return cnt

🗝️keypoint

  1. 두 바늘의 일치를 각도나 시간으로 계산하지 않고, '지나가는 지점이 있으면'이라는 기준으로 판단하는 것이 중요하다.
  2. 만약 바늘이 1초 후에 정각을 가르키면 각도가 0도가 되기 때문에, 이 부분에 대한 예외 처리가 중요하다.
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[LeetCode] 643. Maximum Average Subarray I  (0) 2025.04.10
[LeetCode] 283. Move Zeroes  (0) 2025.04.07
[LeetCode] 443. String Compression  (0) 2025.03.26
[LeetCode] 238. Product of Array Except Self  (0) 2025.03.24
[LeetCode] 345. Reverse Vowels of a String  (0) 2025.03.19
'코딩테스트/Python' 카테고리의 다른 글
  • [LeetCode] 643. Maximum Average Subarray I
  • [LeetCode] 283. Move Zeroes
  • [LeetCode] 443. String Compression
  • [LeetCode] 238. Product of Array Except Self
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Programmers] Level 2. 아날로그 시계
상단으로

티스토리툴바