[プログラマー]予想対戦表(JAVA)
1197 ワード
対戦予定表
問題の説明
△△△ゲーム大会が行われた.今大会はN人が参加し、トーナメント形式で行われる.N人の参加者は1からNの順に割り当てられる.あと、1番、2番、3番、4番N-1番選手同士でゲームを行います.試合ごとに優勝した人は次のラウンドに入ることができます.このとき、次のラウンドに進んだ参加者番号は1番から順にN/2番に並びます.1番と2番の試合で2番が勝利すれば、次のラウンドで1番が与えられ、3番と4番の試合で3番が勝利すれば、次のラウンドで2番が与えられる.ゲームは最後の一人が残るまで行われます
1回戦ではAの参加者とBの参加者が何回戦で出会う.ゲーム参加者数N、参加者番号A、競合者番号Bを関数解のパラメータとした場合、第1ラウンドにA番を持つ参加者は、競合者と思われるB番の参加者と第数ラウンドで会ったときに返されるsolution関数を完了してください.しかし、A番とB番の出場者は終始リードしていた.
せいげんじょうけん
N:21以上220以下の自然数(2の指数に乗じて不戦勝は起こらない).
A,B:N以下の自然数(ただし,A≠B).
I/O例
N A B answer
8 4 7 3
I/O例説明
I/O例#1
第1ラウンドでは、4人目の参加者が3人目の参加者と競争し、7人目の参加者が8人目の参加者と競争する.私たちはいつも勝つと仮定しているので、4番目の参加者は次のラウンドで2番目、7番目の参加者は4番目になります.2番目のラウンドでは、2番目が1番目に整列し、4番目が3番目に整列します.いつも勝つと仮定しているので、2番は次のラウンドで1番、4番は2番になります.3番目のラウンドでは、1番目と2番目の参加者が加算されるので、3を返します.
My Code
class Solution {
public int solution(int n, int a, int b) {
if(a>b) return solution(n,b,a);
int answer = 1;
while(!(a%2==1 && a==b-1)) {
answer++;
a = a/2 + a%2;
b = b/2 + b%2;
}
return answer;
}
}
Comment
属相👨🏼💻
Reference
この問題について([プログラマー]予想対戦表(JAVA)), 我々は、より多くの情報をここで見つけました https://velog.io/@ujone/프로그래머스-예상-대진표-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol