Problem Statement
Unfortunately the controller has some defects. Each of the buttons correctly changes the state of the corresponding lamp. However, it is possible that some of the buttons also change the state of one or both adjacent lamps as well. This means that pressing the button with index i has the following effects:
- The state of lamp i changes.
- If there is a lamp with index i-1, its state might change.
- If there is a lamp with index i+1, its state might change.
Elly wants to reach a configuration in which the number of lamps that are turned on is minimized. Help her determine how many of them will remain lit in the worst possible case. (That is, for the worst possible way how the buttons change the state of the lamps.) She can use each of the buttons as many times as she likes, in any order she likes.
You will be given a
Definition
- Class:
- EllysLamps
- Method:
- getMin
- Parameters:
- String
- Returns:
- int
- Method signature:
- int getMin(String lamps)
- (be sure your method is public)
Notes
- The defects in the switches might not be symmetric. This means that if a lamp with index i happens to change the state of lamp i+1, this does not necessarily mean that the using the switch of lamp i+1 changes the state of lamp i.
Constraints
- lamps will contain between 1 and 50 elements, inclusive.
- Each element of lamps will be either 'Y' or 'N'.
Examples
"YNNYN"
Returns: 2
In this case Elly will only make things worse (or the same) by pressing buttons. For example, suppose that: buttons 0 and 1 each change the state of both lamps 0 and 1 buttons 2 and 3 each change the state of both lamps 2 and 3 button 4 only changes the state of lamp 4 In this situation, Elly cannot reach any configuration with fewer than two lit lamps.
"NNN"
Returns: 0
Obviously, with no initially lit lamps, Elly can just sit and relax.
"YY"
Returns: 0
If one of the lamps influences the other one, then Elly can use it and turn both off with one button press. Otherwise, each button changes the state of its lamp only, thus Elly can turn them both off by pressing both buttons.
"YNYYYNNNY"
Returns: 3
"YNYYYYNYNNYYNNNNNNYNYNYNYNNYNYYYNY"
Returns: 13
"Y"
Returns: 0
"N"
Returns: 0
"YY"
Returns: 0
"YN"
Returns: 1
"NY"
Returns: 1
"NN"
Returns: 0
"YYN"
Returns: 1
"YNY"
Returns: 1
"YNN"
Returns: 1
"NYY"
Returns: 1
"NYN"
Returns: 1
"NNY"
Returns: 1
"YYYYYYYYYNYYYYYYYYY"
Returns: 6
"NNNNNNNNNYNNNNNNNNN"
Returns: 1
"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
Returns: 16
"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
Returns: 0
"YNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYN"
Returns: 25
"NYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNY"
Returns: 25
"NYYNNNNNN"
Returns: 2
"NYYNYNNNN"
Returns: 3
"NYNYYNNNNN"
Returns: 3
"YYNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYNYYNYYYYYYYYY"
Returns: 15
"NNNYNNN"
Returns: 1
"NNNNYYNNYYNNNNYNYYNYYNNYNNNYNNYN"
Returns: 11
"NYNNNYNYYNNNNYNNYNYNNYYNNYNY"
Returns: 11
"YYYNYYYYYYYYYYNYNNNN"
Returns: 6
"YNNNYNYYYYYNYYYYYNYNNYYYYYY"
Returns: 10
"YNYNNNYY"
Returns: 3
"NYYYYYYYYYYYYYYYYNYYYYNNYYYYYYNNYYYYYY"
Returns: 13
"NNYNNYNNYNNNNNNNNNNYNNYNNNYNNNNNNNNNNNNN"
Returns: 6
"NYYYNNNYNN"
Returns: 3
"YYNYYYNYYYYYYYYYYYYNYYNYNYYYYYNYYYYYYNYNYYNNYYN"
Returns: 18
"NNNNNYNNN"
Returns: 1
"YNYYYYYYNYYYNYNNYYYNYNYYYYNYNYNYYYYYNNYYYNNNYNYYY"
Returns: 19
"YYYYYNYYNNNNYYYNYNYY"
Returns: 6
"YNNNYYYYYYYYNYNYYYYNYYNYYYYYNY"
Returns: 11
"NNNYYNNNNNNNNYYNNNYNNN"
Returns: 5
"YNYNYNYNNNYNYNYNNNNY"
Returns: 8
"NNYYYYYNNYNNYYYNYNYYYNYYYYNYYYYNYYNNNNNYNNYY"
Returns: 16
"NNNNYYYNNNNYYNNNYYNNNNNNNNNYNYNYNYNNNYNNNNNY"
Returns: 12
"NYNNNYNNYNNNYNNNNNNYNY"
Returns: 6
"NYYYYYYYYNNYYYNYYYYYYNYYYYYYYYYNYNYYYYYYYYNY"
Returns: 16
"NNNYYNNYNNYNNNYYNNNNNNNYNNNNNNNNYN"
Returns: 8
"NYYNYNNYYYNYYNYNNNNNNYNNNYYYNYYY"
Returns: 11
"YYNYYYNYYYYNYYNNYNYYYYYYYNNYNYNYYYYNNYYYYYYNY"
Returns: 17
"YYNYNNNNYNNYNNYN"
Returns: 5
"YNYYNYNNYNYYYNNNYNNNNYNYNYNNNYNN"
Returns: 11
"NNYNNYNYYNYYNNYNNY"
Returns: 7
"NNYNYNNNYYYNYNNYNNYYYNYNNYYYYYYNYNYYYYYY"
Returns: 15
"YNYNNYYNNYNYYYNYNYY"
Returns: 8
"NNNYNNNNNNN"
Returns: 1
"YNYYYNYNNYNNYYYN"
Returns: 6
"YYNYNYYYYYYYYYNYYYYYYYYYYYYYNYYYYYYYNYYYYYYYYYYY"
Returns: 17
"YYNYYNYNN"
Returns: 3
"NYYYYNNNNYYYYYYYYNYYYYYYYYNYYYY"
Returns: 10
"YYYNNNYNNYYNYNNNNYYNYN"
Returns: 8
"NYYYNNNYNNYNNNNN"
Returns: 4
"NNNNNNNNNNNNN"
Returns: 0
"NYNYNNNNNYNNNNNNNNNNNYNNNN"
Returns: 4
"YNYYYYYYNNYNNNNYYYYYYNYYYYNYYYNNYYYYY"
Returns: 12
"NNNNNNNNNN"
Returns: 0
"YYYYYYYYYYYYYYYYYN"
Returns: 6
"NYYYNNYYYNYYNYNYYNYYYNYYNNY"
Returns: 11
"YYYNYYYYNYYYYNYYYYYNNNNNYYYYYYYNNYYNNNNYNYYNNN"
Returns: 16
"NYNYNYNYNYYYYNYNYYNNYYYNYNY"
Returns: 12
"NYNN"
Returns: 1
"NNNNNNNNNNNNNNNNNN"
Returns: 0
"YNYYNNNNYNNNNNNNYYNNNYNNYY"
Returns: 7
"YNYNNYYYNNNYNYNYYYNYYYNYYNYNYNYNYYNNYY"
Returns: 16
"YNYYYYYYYYYYYYYYYYNYYYYYNYYYYYYYYYYYNYYNYYYYYYYY"
Returns: 16
"YNNYNNNYNNNNNNNNNYNYNNNYNNNYNNNNNNNYNN"
Returns: 8
"YNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYN"
Returns: 25
"NNYYNYYYYYNNYYYNNYNYNYYNYYNYYNNYNYYYNNNYNNYNNYNNNY"
Returns: 19
"NYYNNYYYYYNNNYNYNYYYYNYYYYNYNYYYYYNNYNYNYYYYYYYYYY"
Returns: 21
"NNYNNYYYNYYNYNYNYYNNYNYYYYNNNYNYNYNYNNYYNYYNYNYNYY"
Returns: 19
"YNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNYNNYYNNYYNNYYNNYYN"
Returns: 25
"NYYNNNNYNYNNNYYYNNNYNYNYNYNNNYNYNYYYYNYNYNNYYNNN"
Returns: 18
"YNNYYYYNYNYYNNYYYNYYNNNYYNYNYNNYYNYNYYNYYNYNYN"
Returns: 20
"YNYYYYNYNNYYNNNNNNYNYNYNYNNYNYYYNYNYNYNYNYNYNYYYYN"
Returns: 21
"YNYNYYYYNNNYNYNYNYNNYNNYNNNNYNYNYNYNNNYNYNYNYNY"
Returns: 19
"YNYYYYNYNNYYNNNNNNYNYNYNYNNYNYYYNYYYYYYYYYYYYYYYYY"
Returns: 18
"YNNYYYNNYNYNYNYNYNYNNNNYYYNYYYNYYNYNYYYNYNY"
Returns: 18
"YYYNNYYNNNNNNYYNYNYNNNNYYNNNYYYYYYNYNYNYYY"
Returns: 15
"YYY"
Returns: 1
"YYNYYYYYNYYNYNYNYNYNYNYYYNYNNNYYYNYYYYYYNYNYYNYYNY"
Returns: 19
"NNNNYYNYNNNYYYNNNNNYNYNYYNNNYNNNYYYYNNNNYY"
Returns: 13
"NNNYNYNYNYYYYYYYYYYNNNNNYNNNYNYNNYNY"
Returns: 12
"YYYYNNNNNYNYNYYYNNNYNYYYNNN"
Returns: 9
"YNYYYYNYNNYYYYYYYYYNYNYNYNNYNYYYNYYNNYNNNNNNYYYYYN"
Returns: 19
"YYYYYNYYYYNYY"
Returns: 4
"YYYYYY"
Returns: 2
"YNYYYY"
Returns: 2
"NYNYNNYNYNYNYYNYNYNYNYNYYYNNYNYNYN"
Returns: 15
"YYYYYYYYYYYYY"
Returns: 4
"YYYNNYYYYYYYYYYYYYYYYYYYYYNYYYYYYYYYYYYYYYYYNNNYYY"
Returns: 16
"YYYY"
Returns: 1
"YYYYYYYYYYYYYYYY"
Returns: 5
"YYNY"
Returns: 1
"YYYNYYNYYYNNNNYNNNYYYNNYYNNNYNYNYYNNYYYNNYNNYYNYYN"
Returns: 19
"NNYYNN"
Returns: 2
"YYYYN"
Returns: 2
"YNNNY"
Returns: 2
"YYYNY"
Returns: 2
"YYYYYYYYYY"
Returns: 3
"YNYYYNY"
Returns: 3