티스토리 뷰

알고리즘/백준

[백준] 10834번 벨트

JeongHyeon 2017. 11. 21. 23:26

문제


https://www.acmicpc.net/problem/10834



문제요약


1. 두 개의 바퀴는 벨트로 고정된다.

2. 벨트는 두 개의 방식을 가진다. ( 0자 형태, 8자 형태)

3. 0자 형태는 두 개의 바퀴의 회전방향이 동일하고, 8자 형태는 반대이다.

4. 입력으로 M개의 벨트와 M+1개의 바퀴들의 회전수의 비 그리고 벨트의 형태가 주어진다.

5.. 출력은 M+1 바퀴의 회전 방향과 회전수를 출력한다.


풀이과정


문제가 길어서 처음에 잔뜩 쫄았다.

하지만 규칙을 알면 쉽게 풀 수 있는 문제였다.


1. 회전방향은 초기값을 시계방향으로 잡고 벨트의 형태가 8자 형태가 나오면 반대로 변환시켰다.

2. 회전수 계산은 주어진 회전수의 비를 이용하여 현재 바퀴 바로 이전의 바퀴는 몇바퀴 회전했는지 구한 후 계산하는게 핵심이다.


소스코드


#include <iostream>
using namespace std;
int main()
{
// M : 벨트의 개수
// a,b :벨트로 이어진 두 바퀴의 회전수의 비
// s : 벨트의 형태 (안꼬인 형태는 0,꼬인 형태는 1)
// r : 회전 방향 (시계방향은 true, 반시계방향은 false), 첫 시작은 시계방향
// r_num : M+1번 바퀴의 분당 회전수
int M, a=1, b=1,s,r_num=1;
bool r = true;
cin >> M;
for (int i = 0; i < M; i++)
{
cin >> a >> b >> s;
r_num = (r_num / a)*b;
r = s == 1 ? !r : r; // 꼬인 형태면 방향이 반대
}
if (r) cout << "0 " << r_num;
else cout <<"1 " << r_num;
return 0;
}




'알고리즘 > 백준' 카테고리의 다른 글

[백준] 10163번 색종이  (0) 2017.11.28
[백준] 2839번 설탕배달  (0) 2017.11.26
[백준] 10162번 전자레인지  (1) 2017.11.24
[백준] 10836번 여왕벌  (0) 2017.11.23
[백준] 10835번 카드게임  (0) 2017.11.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함