名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

No.267 トランプソート(あんまり良くない例)

回答

#44841 No.267 トランプソート - yukicoder

明らかな悪い例なので,適当にコメントします.
こんなに複雑なのを本番で書いてたらそりゃスコアも上がらないでしょう\(^o^)/

悪い例の回答アルゴリズムですが,

  • 読み込んで,マークごとに格納する
  • Aなどを置換して数値に変更する
  • マークごとにソート
  • 数値に変換したものを文字列に再変換
  • 再変換したものを答えようの変数に入れる

ッて感じです.
はい..

確かにできるけど,これを実践で組んでいたらかなり遅いと思います.僕はリアルタイムで組んでいました(クズ)

http://yukicoder.me/problems/581/editorial
解放2で解いているが,解放1でもうちょい簡単に解くべきだろうね.
解放1を考えてみようと思います….

mark2number = {"A":1, "T":10, "J":11, "Q":12, "K":13}
number2mark = {1:"A", 10:"T", 11:"J", 12:"Q", 13:"K"}
cardmark2number = {"D":0, "C":1, "H":2, "S":3}
number2cardmark = {0:"D", 1:"C", 2:"H", 3:"S"}
cardlist = [[] for _ in range(4)]

n = int(input())
for s in input().split():
    s0, s1 = s[0], s[1]
    cardlist[cardmark2number[s0]].append(s1)

for i in range(4):
    for j in range(len(cardlist[i])):
        if cardlist[i][j] in mark2number:
            cardlist[i][j] = mark2number[cardlist[i][j]]
        else:
            cardlist[i][j] = int(cardlist[i][j])

for i in range(4):
    cardlist[i].sort()

for i in range(4):
    for j in range(len(cardlist[i])):
        if cardlist[i][j] in number2mark:
            cardlist[i][j] = number2mark[cardlist[i][j]]
        else:
            cardlist[i][j] = str(cardlist[i][j])

res = ""
for i in range(4):
    for j in range(len(cardlist[i])):
        cardlist[i][j] = number2cardmark[i] + cardlist[i][j]
    res += " ".join(cardlist[i])
    if i != 3 and len(cardlist[i]) > 0:
        res += " "

print(res)