-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathDoorsNKeys.java
32 lines (28 loc) · 1.52 KB
/
DoorsNKeys.java
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
32
package by.andd3dfx.common;
/**
* <pre>
* <a href="https://codeforces.com/problemset/problem/1709/A">Task description</a>
*
* Перед вами три двери, пронумерованные от 1 до 3 слева направо. На каждой двери висит замок,
* который может быть открытым только ключом, на котором написано то же число, что и на двери.
*
* Есть три ключа — по одному от каждой двери. Два из них спрятаны за дверьми так, что за каждой дверью не более
* одного ключа. То есть за двумя дверьми лежит по одному ключу, за одной дверью ключа нет. Чтобы получить ключ,
* спрятанный за дверью, надо сначала открыть эту дверь. Оставшийся ключ у вас в руках.
*
* Можете ли вы открыть все двери?
* </pre>
*
* @see <a href="https://youtu.be/ix81AbCNiBE">Video solution</a>
*/
public class DoorsNKeys {
public static boolean couldOpenAllDoors(int[] keysBehindDoors, int keyInHandNumber) {
int doorsOpened = 0;
var curr = keyInHandNumber;
while (curr != 0) {
curr = keysBehindDoors[curr - 1];
doorsOpened++;
}
return keysBehindDoors.length == doorsOpened;
}
}