AtCoder Beginner Contest 219
22157 단어 Python시합 프로그램 설계AtCodertech
A - AtCoder Quiz 2
import sys
import heapq, math, itertools
from collections import defaultdict, deque
from bisect import bisect_left, bisect_right, insort_left, insort_right
inputs = sys.stdin.readline
mod = 10**9+7
inf = float('inf')
#sys.setrecursionlimit(10**7)
def main():
x = int(input())
if 0<=x<40:
print(40-x)
elif 40<=x<70:
print(70-x)
elif 70<=x<90:
print(90-x)
else:
print('expert')
if __name__ == '__main__':
main()
어느 등급으로 인정되는지 판별하여 해당 등급대와 상한의 차이를 얻는다B - Maritozzo
import sys
import heapq, math, itertools
from collections import defaultdict, deque
from bisect import bisect_left, bisect_right, insort_left, insort_right
inputs = sys.stdin.readline
mod = 10**9+7
inf = float('inf')
#sys.setrecursionlimit(10**7)
def main():
s = [input() for _ in range(3)]
t = input()
ans = ''
for c in t:
ans += s[int(c)-1]
print(ans)
if __name__ == '__main__':
main()
각 문자열은 문자열 T에서 얻은 index를 통해 참고할 수 있습니다.저는 해물탕을 먹어본 적이 없어요.
C - Neo-lexicographic Ordering
import sys
import heapq, math, itertools
from string import ascii_lowercase
from collections import defaultdict, deque
from bisect import bisect_left, bisect_right, insort_left, insort_right
inputs = sys.stdin.readline
mod = 10**9+7
inf = float('inf')
#sys.setrecursionlimit(10**7)
def main():
x = input()
n = int(input())
dic = {a:b for a,b in zip(x, ascii_lowercase)}
trans = str.maketrans(dic)
lst = []
for _ in range(n):
s = input()
lst.append((s, s.translate(trans)))
lst = sorted(lst, key=lambda x:x[1])
for p,q in lst:
print(p)
if __name__ == '__main__':
main()
문자열 X의 순서와 일반적인 소문자의 순서 간의 대응 관계를 볼 수 있다.문자열 S str.maketrans(dict)를 입력하여 만든 사전i에 적용, 일반적인 사전 순서에 따른 문자열 S얻다
문자열 Si'정렬 후 원래 문자열 Si 순으로 AC 내보내기
D - Strange Lunchbox
import sys
import heapq, math, itertools
from collections import defaultdict, deque
from bisect import bisect_left, bisect_right, insort_left, insort_right
inputs = sys.stdin.readline
mod = 10**9+7
inf = float('inf')
#sys.setrecursionlimit(10**7)
def main():
n = int(input())
x,y = map(int, inputs().split())
box = [list(map(int, inputs().split())) for _ in range(n)]
dp = [[[inf]*(x+1) for _ in range(y+1)] for _ in range(n+1)]
for i in range(n+1):
dp[i][0][0] = 0
for i in range(n):
[a,b] = box[i]
for j in range(y+1):
for k in range(x+1):
# 使わない場合
dp[i+1][j][k] = min(dp[i][j][k], dp[i+1][j][k])
# 使う場合
dp[i+1][min(j+b, y)][min(k+a, x)] = min(dp[i+1][min(j+b, y)][min(k+a, x)], dp[i][j][k]+1)
print(dp[n][y][x] if dp[n][y][x]!=inf else -1)
if __name__ == '__main__':
main()
이하는 dp로i개까지 사용한 도시락, 도미구이 j개와 문어구이 k개를 먹기 위한 도시락 개수 최소치
도시락을 먹지 않을 때는 도미야키와 타코야키가 모두 0개이므로 dp[i][0]=0으로 초기화해야 한다.
각 도시락이 먹거나 먹지 않는 상황에서의 변화를 고려하면 이것은 dp[n][y][x]가 요구하는 값이다.
Reference
이 문제에 관하여(AtCoder Beginner Contest 219), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ohnuma/articles/752a7d670c102e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)