ABC151 C - Welcome to AtCoder에서 배운
10900 단어 AtCoder파이썬AtCoderBeginnerContest
음, 안돼.
하지만 wa.
WelcomToAtcoder_r0.py
N,M = map(int,input().split())
memo = [False]*N
wa = 0
for _ in range(M):
p,S = input().split()
p = int(p)-1
if not memo[p] and S == "WA":#AC未 get 問題で wa なら インクリメント
wa += 1
elif S == "AC":#AC なら memo を ture.AC は後で true の数を数えればいい。
memo[p] = True
ac = memo.count(True)
print("{} {}".format(ac,wa))
왜 wa인지 몰랐기 때문에,
테스트 케이스를 확인했다.
어리석었다.
문제문에는 AC를 처음 발행할 때까지의 WA의 수와 있다.
앞의 설명에서 하나도 AC가 없다면 WA의 수를 무한히 세는 것은 아닐까?
WelcomToAtcoder_r1.py
N,M = map(int,input().split())
memo = [False]*N
wa = [0]*N
for _ in range(M):
p,S = input().split()
p = int(p)-1
if not memo[p] and S == "WA":
wa[p] += 1
elif S == "AC":
memo[p] = True
WA = 0
AC = memo.count(True)
for i in range(N):
if memo[i]:#正解するまでの WA をカウント
WA += wa[i]
print("{} {}".format(AC,WA))
재 챌린지, 제대로 이해하고 있을까.
문제 문장을 읽고 머리에 떠오른 것은
다음 가장자리 케이스.
edge_case.py
2 5
1 WA
1 AC
2 WA
2 WA
2 WA
AC가 나올 때까지의 WA 카운트를 정상적으로 할 수 있는 패턴과,
AC가 나오지 않고 WA가 계속되는 패턴의 혼합.
대책으로서는, 각 N문자씩 WA를 메모하는 리스트와,
AC를 True/False로 기록하는 목록을 함께 관리해야합니다.
abc151c.py
N,M = map(int,input().split())
AC_memo = [False]*N #AC をメモ
WA_memo = [[] for _ in range(N)] #WA をメモ
for _ in range(M):
p,s = input().split()
p = int(p)
if not AC_memo[p-1] and s == "WA": #未AC かつ WA なら WA としてメモ
WA_memo[p-1].append("WA")
elif not AC_memo[p-1] and s == "AC": #未AC かつ AC なら AC としてメモ
AC_memo[p-1] = True
AC = AC_memo.count(True) #ACは簡単。True を数えるだけ
WA = 0
for i in range(N): #i番目の問題で WA 数をカウントしたい
if AC_memo[i] and len(WA_memo[i]) > 0:#条件として AC_memo[i] が True である必要がある
WA += len(WA_memo[i])
print(AC,WA)
좋았다. 쓰기에는 똑똑함이 부족하지만
포인트를 뚫을 수 있고, 안전 AC.
Reference
이 문제에 관하여(ABC151 C - Welcome to AtCoder에서 배운), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AKpirion/items/d27c5ce19d2d264e4d60텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)