SRM 529 DIV2 Medium 500
SRM529 DIV2 Medium 500
王様ソート。
問題
王の名前を世代順にソートしてね。
名前自体が違う場合は当然名前優先です。
ルパン V,ルパン III みたいなのは
ルパン III,ルパン V にする。
ルパン III,ゴエモン II,ルパン V なら
ゴエモン II,ルパン III,ルパン V な感じ。
最初に文字列でソートかけて、その後数値部分でソートを実行。 数値の処理部分が微妙すぎる。
王様ソート。
問題
王の名前を世代順にソートしてね。
名前自体が違う場合は当然名前優先です。
ルパン V,ルパン III みたいなのは
ルパン III,ルパン V にする。
ルパン III,ゴエモン II,ルパン V なら
ゴエモン II,ルパン III,ルパン V な感じ。
最初に文字列でソートかけて、その後数値部分でソートを実行。 数値の処理部分が微妙すぎる。
import java.util.*; public class KingSort { public String[] getSortedList(String[] kings) { java.util.Arrays.sort(kings); boolean isReplaced = true; while(isReplaced){ isReplaced = false; for(int i = 0;i < kings.length -1;i++){ String kingCur = kings[i].split(" ")[0]; String kingNext = kings[i+1].split(" ")[0]; if(kingCur.equals(kingNext)){ int curNum = GetNum(kings[i]); int nextNum = GetNum(kings[i+1]); if(curNum > nextNum){ isReplaced = true; String temp = new String(kings[i]); kings[i] = kings[i+1]; kings[i+1] = temp; } } } } return kings; } private int GetNum(String king){ String num = king.split(" ")[1]; int rtv = 0; if(num.startsWith("L")){ rtv += 50; num = num.replace("L", ""); } else if(num.startsWith("XL")){ rtv += 40; num = num.replace("XL", ""); } else if(num.startsWith("XXX")){ rtv += 30; num = num.replace("XXX", ""); } else if(num.startsWith("XX")){ rtv += 20; num = num.replace("XX", ""); } else if(num.startsWith("X")){ rtv +=10; } if(num.endsWith("IX")){ rtv +=9; } else if(num.endsWith("VIII")){ rtv +=8; } else if(num.endsWith("VII")){ rtv +=7; } else if(num.endsWith("VI")){ rtv +=6; } else if(num.endsWith("V")){ rtv +=5; } else if(num.endsWith("IV")){ rtv +=4; } else if(num.endsWith("III")){ rtv +=3; } else if(num.endsWith("II")){ rtv +=2; } else if(num.endsWith("I")){ rtv +=1; } return rtv; } }
« SRM528 DIV2 Easy 250 | SRM529 DIV2 Easy 250 »
コメント
トラックバック
| h o m e |