[Pythhon] AtCoder 버전!개미책 정진 일기
서문
파이톤 정진 건차 선생AtCoder Edition!개미책 (초급편)의 일기다.
매일 정진하다.
더 좋은 코드 작성법이 있다면 언제든지 의견을 제시하세요.
START(2020/12/04)
1-6 가볍게 몸 풀기
예제 1-6-1 삼각형
[AtCoder의 클래스 문제!]
· ARC004A 2시간 최대 거리
【해답례】
arc004a.py
import math
N=int(input())
X=[]
Y=[]
for i in range(N):
x,y=input().split()
X.append(int(x))
Y.append(int(y))
ans = 0
for j in range(N):
for t in range(N):
if math.sqrt(pow(X[t] - X[j],2) + pow(Y[t] - Y[j],2)) > ans:
ans = math.sqrt(pow(X[t] - X[j],2) + pow(Y[t] - Y[j],2))
print(ans)
[소감]압도적인 전탐색.제곱근 sqrt,멱pow 대응.
더 간결한 내용을 입력할 수 있습니다.
・ABC 051B Sum of There Integers
[오답]
k,s = map(int,input().split())
ans = 0
for x in range(k + 1):
for y in range(k + 1):
for z in range(k + 1):
if x + y + z == s:
ans += 1
print(ans)
시간이 모자라다.해설부터 계산량이 O(K^3)이기 때문에 안 된다.그래서 나는 아래의 내용을 개작했다.
【해답례】
abc051b.py
k,s = map(int,input().split())
ans = 0
for x in range(k + 1):
for y in range(k + 1):
z = s - x - y
if 0 <= z <= k:
ans += 1
print(ans)
[소감]간단하게 X+Y+Z=S에서 Z=S-X-Y로 결정되기 때문에 X, Y가 정하는 시점 Z도 정해져 있어 더블 루프를 사용할 수 있다.계산량도 O(K^2)로 줄여서 해결했다.
ARC061C 많은 공식
arc061c.py
s = input()
n = len(s)
ans = 0
for bit in range(1 << (n - 1)): #左へビットシフト
#各場合で式fを生成
f = s[0]
for i in range(n - 1):
if bit & (1 << i):
f += "+"
f += s[i + 1]
ans += sum(map(int, f.split("+")))
print(ans)
[소감]모두는bit 전체 탐색을 가장 좋아한다.다음 기사를 참고하였습니다.아직 익숙하지 않은 느낌이 많아서 연습을 쌓고 싶어요.
【참고】
bit 전체 탐색
(to be continue... 할까요??)
Reference
이 문제에 관하여([Pythhon] AtCoder 버전!개미책 정진 일기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/omizu_in_da_ie/articles/ef9373c50c3737텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)