※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 4117번 문제인 Combination Lock이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/4117
4117번: Combination Lock
The input file consists of a number of test cases, one test case per line. Each line of the input file contains four integers: N, T1, T2, T3, in this order, separated by blank spaces. The integer N is a multiple of 5, 25 <= N <= 100. The numbers T1, T2 and
www.acmicpc.net
처음에 눈금을 T1으로 설정할 때는 시작하는 눈금의 위치가 어디였냐에 따라 돌리는 틱의 수가 달라지지만 그 이후의 과정의 틱의 수는 일정함을 관찰하자. 또한 처음에 가장 많은 틱을 이동하게 되는 경우는 목표하는 위치보다 1틱 차이가 나 두 레볼루션 이후 N - 1틱을 이동해야하는 경우임을 관찰하자.
첫 눈금을 T1으로 설정한 이후로는 각 눈금을 설정할 때 돌려야하는 틱의 수를 구하는 것으로 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int N, T1, T2, T3;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> T1 >> T2 >> T3;
while (N) {
int ans1 = 4 * N - 1;
int ans2 = (T1 <= T2) ? T2 - T1 : N - (T1 - T2);
int ans3 = (T2 <= T3) ? N - (T3 - T2) : T2 - T3;
cout << ans1 + ans2 + ans3 << '\n';
cin >> N >> T1 >> T2 >> T3;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 15823 // C++] 카드 팩 구매하기 (0) | 2023.08.21 |
---|---|
[BOJ 15825 // C++] System Call (0) | 2023.08.20 |
[BOJ 15826 // C++] Namje Adventure (0) | 2023.08.19 |
[BOJ 15831 // C++] 준표의 조약돌 (0) | 2023.08.18 |
[BOJ 3234 // C++] LUKA (0) | 2023.08.17 |