※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts