Problem Statement
Two robbers break into an antique shop and decide to steal an old famous sofa. The shop is quite messy, so this may be a difficult task.
You are given the floorplan of the shop in the
Your objective is to move the famous sofa so that at least one of its cells is in the top row.
Return the least number of pushes required to accomplish this goal, or -1 if it is not possible.
Definition
- Class:
- FurnitureRobbery
- Method:
- leastPushes
- Parameters:
- String[]
- Returns:
- int
- Method signature:
- int leastPushes(String[] plan)
- (be sure your method is public)
Constraints
- plan will contain between 2 and 5 elements, inclusive.
- All elements in plan will have the same length.
- Each element in plan will contain between 2 and 6 characters, inclusive.
- Each character in plan will be an uppercase letter ('A'-'Z') or '.'.
- Each piece of furniture will occupy at least 2 cells.
- Cells with same letters will be connected.
- There will be exactly one 'A' piece.
Examples
{"......", ".BBB.X", ".B.B.X", "DDCC.Y", "..AAAY"}
Returns: 13
...... ...... BBB... BBB... BBB... BBB... BBBAAA .BBB.X .BBB.X B.B..X B.B..X B.B..X B.B... B.B... .B.B.X 3 moves .B.B.X 2 moves .....X 2 moves ..AAAX 1 move ..AAAX 2 moves ..AAA. 3 moves ...... DDCC.Y ------> CC...Y ------> CC...Y ------> CC...Y ------> CC..Y. ------> CC..YX ------> CC..YX ..AAAY DDAAAY DDAAAY DD...Y DD..Y. DD..YX DD..YX 13 pushes total.
{"......", ".BBB.X", ".B.B.X", "....YY", "..AAAY"}
Returns: 11
{"...C.C", "BBBCCC", "B.B...", ".XX..Y", "..AAAY"}
Returns: 13
{"......", "ZBBBXY", "ZBBBXY", "EAAACC", "E.DDCC"}
Returns: 20
{"......", "BBB...", "BCBC..", ".CCC.Y", "..AAAY"}
Returns: 16
{"......", "BBB.ZZ", "BCBC..", ".CCC.Y", "..AAAY"}
Returns: 21
{".C", "BC", "BC", "B.", "AA"}
Returns: -1
{".XX.Y.", ".AA.Y."}
Returns: 3
{"QQWWEE", "RRTTYY", "UUIIOO", "PPSSDD", "ZZ..AA"}
Returns: 25
{"QQWWEE", "RRTTYY", "......", "......", "ZZ..AA"}
Returns: 12
{"YYYXXX", "ZBBBB.", "ZBBBBM", "VVAA.M", "..AATT"}
Returns: -1
{"YYYXXX", "ZBBBB.", "ZBBBB.", "VVAATO", "..AATO"}
Returns: -1
{"YYSSXX", "ZBBBB.", "ZBBBB.", "VVAATO", "..AATO"}
Returns: -1
{ "QQWTEE", "RRWTYY", "PUSSDO", "PUIIDO", "ZZ..AA"}
Returns: 45
{ "QQWTEE", "RRWTYY", "PUSSDO", "PUIIDO", "....AA"}
Returns: 26
{ "......", ".ADD..", ".AAD..", ".DAD..", ".DDD.."}
Returns: -1
{ ".ZZ...", ".ZFFFF", ".FF.FA", ".F.DAA", "..DD.."}
Returns: -1
{"......", ".CCDD.", "XXBBBY", "XXBBBY", "....AA"}
Returns: 13
{"..DD..", ".BBBZZ", ".BBBYY", "SBBBXX", "SAAA.."}
Returns: 29
{"BBCCDD", "XXYYZZ", "SSRRFF", "TT..VV", ".AA.LL"}
Returns: 21
{"....",".BB.",".AA."}
Returns: 4
{"AAA","..."}
Returns: 0
{"AAAAAA","BBBBBB","CCCCCC","DDDDDD","EEEEEE"}
Returns: 0
{ "BB.A.E", "BAAA.E", "BBA.EE", "CAA.EE", "CA.EEE" }
Returns: 0
{ "BB...E", "BAAA.E", "BBA.EE", "CAA.EE", "CA.EEE" }
Returns: 2
{"ZZYYXX", "WWVVRR", "QQEETT", "DDFFGG", ".AAUU." }
Returns: 27
{"......", "ZBBBXY", "ZBBBXY", "EAAACC", "E.DDCC" }
Returns: 20
{"DDCCBB", "EEFFGG", "HHIIJJ", "KKMMNN", "AALL.." }
Returns: 27
{"..BCCC", "D.BFF.", "D.XX.Y", "ZZ...Y", "..AASS" }
Returns: 10
{"ZZZZZZ", "AA.BB.", "CC.DD.", "EE.FF.", "GG.HH." }
Returns: -1
{"BBCCDE", "FFGGDE", "....HH", "XX.YY.", "AAANN." }
Returns: 27
{"MMNN..", "JJKKLL", "GGHHII", "DDEEFF", "AABBCC" }
Returns: 29
{"F.G.H.", "F.G.H.", "DD.EE.", "BB.CC.", "AAAAAA" }
Returns: -1
{"BBCCDD", "EEFFGG", "HHIIJJ", "KKLLMM", "AANN.." }
Returns: 27
{"BBBBBB", "AABBCC", "DDEEFF", "GGHHII", "JJKK.." }
Returns: -1
{"..JJKK", "NNHHII", "MMFFGG", "LLDDEE", "AABBCC" }
Returns: 25
{"BBCCDD", "EEFFGG", "......", "PP....", "AAAAA." }
Returns: -1
{"BBCCDD", "EEFFGG", "HHIIJJ", "KKLLMM", "OO..AA" }
Returns: 25
{".DE..G", "BDE.FG", "BACCF.", "AAA..." }
Returns: 13
{"......", ".BBB.X", ".B.BBX", "DDCC.Y", "..AAAY" }
Returns: -1
{"..BBCC", "DDEEFF", "GGHHII", "JJKKLL", "MMNNAA" }
Returns: 29
{"ZZZZZZ", "AA..DD", "EE..GG", "CCQQYY", "MMNNWW" }
Returns: -1
{".DEFGZ", "CDEFGZ", "C.....", "B.....", "BAAAAA" }
Returns: 31
{"XXYYZZ", "FFSSEE", "DDMMGG", "RRWWNN", "..AA.." }
Returns: 23
{"BBBRRR", "CCDDEE", "FFGG..", "AAHHII", "JJ...." }
Returns: 20
{"BBCCDD", "EEFFGG", "HHIIJJ", "KKLLMM", "...AAA" }
Returns: -1
{"JJLL..", "II..FG", "EEE.FG", "DCBBBB", "DC..AA" }
Returns: 28
{"AA...", ".....", "BB..." }
Returns: 0
{"LLMM..", "IIJJKK", "FFGGHH", "ZZDDEE", "AABBCC" }
Returns: 29
{"..QQWW", "RRTTYY", "UUIIOO", "GGHHJJ", "BBCCAA" }
Returns: 29
{"......", "BBCCDD", "HHLLLL", "KKSSMM", "AAEEPP" }
Returns: 21
{"..BBBB", "..DDCC", "EEFFGG", "HHIIJJ", "KKLLAA" }
Returns: 24
{"EEFFLL", ".DD.GG", "CC.HH.", "BBJJZZ", "KKAAYY" }
Returns: 19
{"BBBBB.", "AACCDD", "EEFFGG", "HHIIJJ", "KKLL.." }
Returns: -1