fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 34530 (C++) Back to Origin
최초 업로드: 2025-10-04 18:40:50
최근 수정 시간: 2025-10-04 18:40:50
게시자: rlatjwls3333
카테고리: 백준
조회수: 10
# [Bronze I] Back to Origin [문제 링크](https://www.acmicpc.net/problem/34530) ## 문제 설명 <p><img alt="" src="https://upload.acmicpc.net/f69b7a93-65c0-421d-8245-672154431a71/-/preview/" style="width:50%; height:auto; display:block; margin:auto;"></p> <p>북극에 사는 호기심 많은 펭귄 한 마리가 신기한 경험을 했다. 북극의 한 지점에서 북쪽으로 $1\text{km}$를 간 뒤, 동쪽으로 $1\text{km}$, 남쪽으로 $1\text{km}$를 이동했더니 정확히 출발점으로 돌아온 것이었다!</p> <p>펭귄은 이 움직임을 무한한 2차원 평면 위에서 똑같이 재현해 보기로 했다. 북극에서처럼 한 점에서 시작해 북쪽으로 $1\text{km}$, 시계 방향으로 $90^\circ$ 돌아 $1\text{km}$, 다시 $90^\circ$ 돌아 $1\text{km}$를 이동했다. 하지만 이번에는 출발점으로 돌아오기는커녕 엉뚱한 곳에 도착하고 말았다.</p> <p>펭귄은 계속해서 움직여 본 뒤에야, 평면 위에서는 네 번을 움직여 정사각형을 그려야만 출발점으로 돌아올 수 있다는 것을 깨달았다. 펭귄은 문득 궁금해졌다. ”만약 회전 각도가 $90^\circ$가 아니라면 어떨까?”</p> <p>이 펭귄이 한 번의 행동으로 $1\text{km}$ 이동 후 시계 방향으로 정수 각도 $d^\circ$만큼 회전할 수 있을 때, 출발점으로 다시 돌아오기까지 최소 몇 번의 행동이 필요한지 구해보자. 단, 이동하는 도중에 출발점을 스쳐 지나가는 경우는 돌아온 것으로 보지 않으며, 반드시 $1\text{km}$ 이동을 마친 직후의 위치가 출발점과 정확히 일치해야 한다.</p> ## 입력 <p>첫째 줄에 펭귄이 시계 방향으로 회전할 각도의 크기인 정수 $d$가 주어진다. $(1\le d\le 359)$</p> ## 출력 <p>펭귄이 출발점으로 다시 돌아오기까지 최소 몇 번의 행동이 필요한지 출력한다. 만약 영원히 돌아올 수 없다면, <span style="color:#e74c3c;"><code>-1</code></span> 을 출력한다.</p> ## 풀이 360도의 배수가 되면 항상 출발지점으로 돌아오기에 d*i가 360으로 나누어떨어지는 i를 찾으면 된다. 이때 d가 어떤 각도라도 360도의 배수가 될 수 있어서 브루트포스로 찾으면 된다. ``` c++ #include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int d; cin >> d; for(int i=2;;i++) { if(i*d%360==0) { cout << i; return 0; } } } ```