diff --git a/yitou/B079.java b/yitou/B079.java new file mode 100644 index 0000000000000000000000000000000000000000..656c8fba642d547e2898bf69419c0ec0904df30f --- /dev/null +++ b/yitou/B079.java @@ -0,0 +1,60 @@ +import java.util.Scanner; + +public class B079 { + + private static final int LIMIT_VALUE = 101; + + public static void main(String[] args) { + final Scanner scanner = new Scanner(System.in); + final String firstName = scanner.next(); + final String secondName = scanner.next(); + + // 配列に名前を格納 + String[] names = { firstName, secondName }; + + // 各組み合わせの相性を計算 + int compatibility = calculateCompatibility(names); + + System.out.println(compatibility); + } + + private static int calculateCompatibility(String[] names) { + // すべての組み合わせをつくる + int maxCompatibility = 0;// 最大値の保持 + + for (int i = 0; i < names.length; i++) { + for (int j = 0; j < names.length; j++) { + if (i != j) { + String combined = names[i] + names[j]; + int compatibility = compatibilityScore(combined); + maxCompatibility = Math.max(maxCompatibility, compatibility);// 新たなcompatibilityをmaxCompatibilityと比較 + } + } + } + + return maxCompatibility; + } + + private static int compatibilityScore(String combined) { + int[] sequence = new int[combined.length()]; + for (int i = 0; i < combined.length(); i++) { + sequence[i] = combined.charAt(i) - 'a' + 1; // aを1,bを2,~zを26 + } + + // 更新 + while (sequence.length > 1) { + int[] newSequence = new int[sequence.length - 1]; + + for (int i = 0; i < sequence.length - 1; i++) { + newSequence[i] = sequence[i] + sequence[i + 1]; + if (newSequence[i] > LIMIT_VALUE) { + newSequence[i] -= LIMIT_VALUE; + } + } + + sequence = newSequence; + } + + return sequence[0]; + } +}