Problem Statement
There is a one-dimensional road. The road is separated into N consecutive parts. The parts are numbered 0 through N-1, in order. Ciel is going to walk from part 0 to part N-1.
Ciel also noticed that each part of the road has a color: either red, green, or blue. Part 0 is red.
Ciel is going to perform a sequence of steps. Each step must lead in the positive direction. That is, if her current part is i, the next step will take her to one of the parts i+1 through N-1, inclusive. Her steps can be arbitrarily long. However, longer steps are harder: a step of length j costs j*j energy.
Additionally, Ciel wants to step on colors in a specific order: red, green, blue, red, green, blue, ... That is, she starts on the red part 0, makes a step to a green part, from there to a blue part, and so on, always repeating red, green, and blue in a cycle. Note that the final part N-1 also has some color and thus Ciel must reach it in a corresponding step.
You are given a
Definition
- Class:
- ColorfulRoad
- Method:
- getMin
- Parameters:
- String
- Returns:
- int
- Method signature:
- int getMin(String road)
- (be sure your method is public)
Constraints
- road will contain between 2 and 15 characters, inclusive.
- Each character of road will be either 'R' or 'G' or 'B'.
- The first character of road will be 'R'.
Examples
"RGGGB"
Returns: 8
The optimum solution is to step part 0 -> part 2 -> part 4. The total cost is 2*2 + 2*2 = 8.
"RGBRGBRGB"
Returns: 8
The optimum solution is to make steps of length 1. It costs 1*1 = 1 per each step, so the total cost is 8.
"RBBGGGRR"
Returns: -1
It is impossible to reach the destination.
"RBRRBGGGBBBBR"
Returns: 50
"RG"
Returns: 1
"RBRGBGBGGBGRGGG"
Returns: 52
"RB"
Returns: -1
"RR"
Returns: -1
"RBRBRBRBRBRBRBG"
Returns: 196
"RGRGRGRGRGRGRGR"
Returns: -1
"RBRBRBRBRGRGRGR"
Returns: -1
"RRRRRRRRRRRRRRR"
Returns: -1
"RGGGGGGGGGGGGGR"
Returns: -1
"RBBBBBBBBBBBBBR"
Returns: -1
"RGGGBBRRRRGGBBR"
Returns: 34
"RGGBBRRGGBBRRG"
Returns: 25
"RGGGBBBRRRGGGB"
Returns: 35
"RGGGGBBBBRRRRG"
Returns: 43
"RGGGGGBBBBBRRRG"
Returns: 50
"RG"
Returns: 1
"RRB"
Returns: -1
"RGBR"
Returns: 3
"RGRBG"
Returns: 16
"RGBRRG"
Returns: 7
"RRBRBGG"
Returns: 36
"RRGBGRRR"
Returns: 21
"RGBGBRRRB"
Returns: 34
"RRGGGBBGGR"
Returns: 27
"RBGGGRGRRGB"
Returns: 52
"RBRGBRBGBGBG"
Returns: 47
"RGBGBBRGBBBBG"
Returns: 50
"RRGRGRGGRRRRBR"
Returns: 73
"RGGBGBGBRBRGBGG"
Returns: 50
"RRBRB"
Returns: -1
"RRRBR"
Returns: -1
"RGBGG"
Returns: 16
"RBBBB"
Returns: -1
"RRRRB"
Returns: -1
"RBBGBBGGGGRGRGG"
Returns: 54
"RRRRRGBGRBRBRRG"
Returns: 54
"RBRRBRRGRRGGBGR"
Returns: 78
"RRGBRGRGRRBBBBR"
Returns: 40
"RGBGRGRGRGRGRBR"
Returns: 44
"RGGBR"
Returns: 6
"RGBBBR"
Returns: 9
"RRRGBBR"
Returns: 14
"RRRGGBBR"
Returns: 17
"RRRRRRRRRRRRRG"
Returns: 169
"RRRRRRRRGGGGGB"
Returns: 89
"RRGGGGGGGGBBR"
Returns: 54
"RGGGGGGGGGBRG"
Returns: 52
"RRRRRRRRRRRRRRG"
Returns: 196
"RGGGGGGGGGGGGGB"
Returns: 98
"RGGGGGGGBBBBBBR"
Returns: 66
"RRRGGGGBRRRRRRG"
Returns: 50
"RRRRGGGBBBBBRGB"
Returns: 50
"RRRRGBBBBBRRGBR"
Returns: 40
"RRRRRGBBBBRGBRG"
Returns: 42
"RGBRRRRGGGGBRGB"
Returns: 32
"RGBBRGBBBRGGGBR"
Returns: 24
"RGBRGGGBBRRGBRG"
Returns: 22
"RGBBRGBBRGGBRGB"
Returns: 20
"RGBRGBRGBBRGBBR"
Returns: 18
"RRGBRGBRGBRGBRG"
Returns: 16
"RGBRGBRGBRGBRGB"
Returns: 14
"RRRRRRGGGGGBRRG"
Returns: 66
"RRRRGGBBBBBBRRG"
Returns: 52
"RGGGGGGGGBRRRRG"
Returns: 54
"RRRRRRRRRRGBRRG"
Returns: 106
"RGGGGBBBBRGGGGB"
Returns: 40
"RRRRGBBBBBRGGGB"
Returns: 42
"RRRGGGGBBRRRRGB"
Returns: 44
"RGGGBBBRRRRRRGB"
Returns: 44
"RGGBBBBBRGGGBBR"
Returns: 34
"RRRRGBBRRRRGBBR"
Returns: 38
"RGBBRRRRRRRRGBR"
Returns: 48
"RGGGBBRRRRRGGBR"
Returns: 36
"RRRRRRRRRRRRRRR"
Returns: -1
"RGBRGBRGBRGB"
Returns: 11
"RGGRB"
Returns: 8
"RGBGRR"
Returns: 11