「恋するハッカソン」の「「制服」ゲットチャレンジ!」がクリアできない
問題チャレンジ中の人にはヒントになるので閲覧注意です。
完全に詰んでるっぽいので後で挑戦するまでコードを寝かせておこうと思う。
テストケース2までは通過するのだが、テストケース3で5.00秒で通過しない。
時間切れか?ループの問題?
いまは間違っているところが見つからない。
こんなときは時間をおいて見直す必要がありそうだ。
uniform.cs
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
string[] inputCardOrder = Console.ReadLine().Split(' ');//最初に入力されるカードの並び順
List<int> cardOrder = new List<int>(52);//残りカードリスト
//-最初に入力されたカードの並び順でカードリストを作るついでに、J,Q,K,A,2のカードの強さを正しい整数値に変換しながら、カードリスト化する 3<4<5...<10<J<Q<K<A<2
foreach (string ic in inputCardOrder)
{
if (ic == "A") { cardOrder.Add(14); }
else if (ic == "2") { cardOrder.Add(15); }
else if (ic == "J") { cardOrder.Add(11); }
else if (ic == "Q") { cardOrder.Add(12); }
else if (ic == "K") { cardOrder.Add(13); }
else
{
cardOrder.Add(int.Parse(ic));
}
}
List<int> playerRanking = cardOrder.ToList();
//-プレイヤーの順位を計算する
int fieldCard = -1;//場に出ているカード(-1で初期化しているのは最初のプレイヤーのカードが必ず勝利判定を通過させるために)
int indexOfOwnerOfFieldCard = -1;
int countOfPlayerRank = 1;
for (int i = 0; i < 52; i++)
{
if (i == indexOfOwnerOfFieldCard)//--2.フィールドに出されたカードのオーナーの手番が一周回ってきてしまったとき
{
while (cardOrder[i] == -1)
{
if (i < 51) i++;
else i = 1;
fieldCard = cardOrder[i] - 1;
}
}else{}
int currentPlayerCard = cardOrder[i];//--1.
if (fieldCard < currentPlayerCard)//場に出ているカードに現在のプレイヤーの持ちカードが勝利する場合
{
fieldCard = currentPlayerCard;
indexOfOwnerOfFieldCard = i;
playerRanking[i] = countOfPlayerRank;
countOfPlayerRank++;
cardOrder[i] = -1;
}else{}
if (countOfPlayerRank > 52) { break; }//52位まで決まったらメインループを抜け出す
else { }
if (51 <= i && indexOfOwnerOfFieldCard != 51) { i = 1; }
else if (51 <= i && indexOfOwnerOfFieldCard == 51) { i = 50; }
else { }
}
//-回答を出力する
foreach (var rank in playerRanking)
{
Console.WriteLine(rank);
}
}
}
けど塩漬けになりそうだなあ。。。
どこかで質問することも頭の片隅に置いておく。
追記(2018/06/05/10:38)
メインのループにカウンタを仕込んで1000万回以上のループがあった場合は
break;するようにしたら、テストケース3は0.10秒でテスト失敗となった。
入力によっては何かしらループが失敗する原因になるということだと思う。
何が原因でどう対処すればよいだろうか?
いや、このカウンタはそもそも無意味じゃないか?
本来は一億回目のループで結果が出るところを単純にループ回数制限で前倒ししてテスト失敗してるだけかもしれないし。
わからなくなってきた。考えなくては。
Author And Source
この問題について(「恋するハッカソン」の「「制服」ゲットチャレンジ!」がクリアできない), 我々は、より多くの情報をここで見つけました https://qiita.com/cp3/items/3238eb033c7e61c1c020著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .