結果

問題 No.267 トランプソート
ユーザー tsuchinaga
提出日時 2019-03-26 08:12:03
言語 Go
(1.23.4)
結果
AC  
実行時間 2 ms / 1,000 ms
コード長 938 bytes
コンパイル時間 10,721 ms
コンパイル使用メモリ 235,620 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2024-10-11 01:13:24
合計ジャッジ時間 11,587 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import (
	"fmt"
	"sort"
)

func main() {
	var n int
	_, _ = fmt.Scan(&n)

	type card struct {
		s    string // 元の字
		m, n int    // マーク(1: D, 2: C, 3: H, 4: S), 数字(1: A, 2~9: 2~9, 10: T, 11: J, 12: Q, 13: K)
	}
	cards := make([]card, n)

	s := ""
	for i := range cards {
		_, _ = fmt.Scan(&s)
		cards[i].s = s

		switch s[0] {
		case 'D':
			cards[i].m = 1
		case 'C':
			cards[i].m = 2
		case 'H':
			cards[i].m = 3
		case 'S':
			cards[i].m = 4
		}

		switch s[1] {
		case 'A':
			cards[i].n = 1
		case 'T':
			cards[i].n = 10
		case 'J':
			cards[i].n = 11
		case 'Q':
			cards[i].n = 12
		case 'K':
			cards[i].n = 13
		default:
			cards[i].n = int(s[1] - '0')
		}
	}

	sort.Slice(cards, func(i, j int) bool {
		return cards[i].m < cards[j].m || (cards[i].m == cards[j].m && cards[i].n < cards[j].n)
	})
	for i, c := range cards {
		if i != 0 {
			fmt.Print(" ")
		}
		fmt.Print(c.s)
	}
	fmt.Println()
}
0