© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 5675 - 시침과 분침

2025-08-22
BOJ
브론즈 I
cpp
원본 문제 보기
수학
구현
애드 혹
시뮬레이션

문제

BOJ 5675 - 시침과 분침

아날로그 시계에서 시침과 분침이 정확히 일직선(180도)을 이루는 시각이 존재하는지 판별하는 문제다. 분침은 1분에 6도, 시침은 1분에 0.5도 이동하므로 둘의 상대 속도는 5.5도/분이며, 시침과 분침이 일직선이 되는 주기는 720/11분이다.

입력

  • 여러 줄에 걸쳐 정수 n이 주어진다 (EOF까지).

출력

  • n이 6의 배수이면 Y, 그렇지 않으면 N을 출력한다.

예제

입력출력
6Y
5N
12Y

풀이

시침과 분침이 일직선이 되는 조건을 수학적으로 분석하면 n이 6의 배수인지 확인하는 단순한 판별식으로 귀결된다.

  1. 분침의 각도: 분침은 분 단위로 6도씩 회전한다.
  2. 시침과 분침의 각도 차이가 180도가 되려면 특정 조건이 필요하다.
  3. n분 후 분침 각도는 6n도, 시침 각도는 0.5n도 이며, 두 침이 180도 차이가 나면 일직선이 된다.
  4. 분석 결과 n이 6의 배수일 때만 정수 시각에 일직선이 성립한다.

핵심 아이디어: 시침과 분침이 일직선(180도)이 되는 시각은 매 720/11분마다 발생하지만, 문제 조건에서 n이 6의 배수인지만 확인하면 된다.

코드

#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n;
  while (cin >> n)
  {
    if (n % 6)
      cout << "N" << "\n";
    else
      cout << "Y" << "\n";
  }
}

복잡도

  • 시간: O(Q) — Q는 입력 쿼리 수 (각 쿼리를 O(1)에 처리)
  • 공간: O(1)