AtCoder ABC 178 Python (A~E)
총괄
A와 B밖에 풀리지 않는다.
자신의 풀림에 유연하게 하면서, 담담하게 문제를 해내 갈 수밖에 없습니다.
이번은 수학회(?)였습니다.
문제
A. Not
답변
x = int(input())
if x == 0:
print(1)
else:
print(0)
여러가지 쓰는 방법이 있다고 생각합니다만, 솔직하게 if문으로 썼습니다.
B. Product Max
답변
a, b, c, d = map(int, input().split())
answer = 0
if a < 0 and 0 <= b:
if c < 0 and 0 <= d:
answer = max(a * c, b * d)
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * c
elif 0 <= a and 0 <= b:
if c < 0 and 0 <= d:
answer = b * d
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * d
elif a < 0 and b < 0:
if c < 0 and 0 <= d:
answer = a * c
elif 0 <= c and 0 <= d:
answer = b * c
elif c < 0 and d < 0:
answer = a * c
print(answer)
if문을 쓰고 있는 도중에, 「max라고 하면 안 된다・・・」라고 생각하면서도, 되돌리지 않고 전 경우 나누기를 썼습니다.
이렇게 경우는 하지 않아도 아래와 같이 max로 풀면 끝입니다.
a, b, c, d = map(int, input().split())
answer = max(a*c, a*d, b*c, b*d)
print(answer)
C. Ubiquity
답변 (나중 AC)
MOD = 10**9 + 7
N = int(input())
# 少なくとも0がはいる
in0 = 10**N - 9**N
# 少なくとも0がはいる
in9 = 10**N - 9**Nu
# 0または9がはいる
0and9 = 10**N - 8**N
answer = in0 + in9 - 0and9
print(answer%MOD)
목구멍까지 대답이 나오고 있었습니다만, 왠지 대답을 도출하지 않고.
보통으로 셀 수는 없기 때문에, 전체로부터 뺄셈을 실시하는 것으로 산정합니다.
아래 이미지 다이어그램.
D. Redistribution
답변(후일)
MOD = 10**9 + 7
S = int(input())
dp = [0] * (S+1)
dp[0] = 1
for i in range(1, S+1):
for j in range(0, (i-3)+1):
dp[i] += dp[j]
dp[i] %= MOD
print(dp[S])
snuke 님의 답변 그대로.
DP
그렇다고 알았던 곳까지 밖에 모른다.
해설 보면, 「확실히 네」라고 알지만, 실제로 제한 시간내에 풀리라고 하면 DP
는 풀 수 없습니다.
수업이 부족하다・・・.
E. Dist Max
답변(후일)
N = int(input())
a, b = [], []
for i in range(N):
x, y = map(int, input().split())
a.append(x+y)
b.append(x-y)
a.sort()
b.sort()
answer = max(a[-1] - a[0], b[-1] - b[0])
print(answer)
이 또한 snuke 님의 답변 그대로.
max의 식변형은 공부가 되었습니다.
Reference
이 문제에 관하여(AtCoder ABC 178 Python (A~E)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/K_SIO/items/29896691aaf068ecbecb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
A. Not
답변
x = int(input())
if x == 0:
print(1)
else:
print(0)
여러가지 쓰는 방법이 있다고 생각합니다만, 솔직하게 if문으로 썼습니다.
B. Product Max
답변
a, b, c, d = map(int, input().split())
answer = 0
if a < 0 and 0 <= b:
if c < 0 and 0 <= d:
answer = max(a * c, b * d)
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * c
elif 0 <= a and 0 <= b:
if c < 0 and 0 <= d:
answer = b * d
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * d
elif a < 0 and b < 0:
if c < 0 and 0 <= d:
answer = a * c
elif 0 <= c and 0 <= d:
answer = b * c
elif c < 0 and d < 0:
answer = a * c
print(answer)
if문을 쓰고 있는 도중에, 「max라고 하면 안 된다・・・」라고 생각하면서도, 되돌리지 않고 전 경우 나누기를 썼습니다.
이렇게 경우는 하지 않아도 아래와 같이 max로 풀면 끝입니다.
a, b, c, d = map(int, input().split())
answer = max(a*c, a*d, b*c, b*d)
print(answer)
C. Ubiquity
답변 (나중 AC)
MOD = 10**9 + 7
N = int(input())
# 少なくとも0がはいる
in0 = 10**N - 9**N
# 少なくとも0がはいる
in9 = 10**N - 9**Nu
# 0または9がはいる
0and9 = 10**N - 8**N
answer = in0 + in9 - 0and9
print(answer%MOD)
목구멍까지 대답이 나오고 있었습니다만, 왠지 대답을 도출하지 않고.
보통으로 셀 수는 없기 때문에, 전체로부터 뺄셈을 실시하는 것으로 산정합니다.
아래 이미지 다이어그램.
D. Redistribution
답변(후일)
MOD = 10**9 + 7
S = int(input())
dp = [0] * (S+1)
dp[0] = 1
for i in range(1, S+1):
for j in range(0, (i-3)+1):
dp[i] += dp[j]
dp[i] %= MOD
print(dp[S])
snuke 님의 답변 그대로.
DP
그렇다고 알았던 곳까지 밖에 모른다.
해설 보면, 「확실히 네」라고 알지만, 실제로 제한 시간내에 풀리라고 하면 DP
는 풀 수 없습니다.
수업이 부족하다・・・.
E. Dist Max
답변(후일)
N = int(input())
a, b = [], []
for i in range(N):
x, y = map(int, input().split())
a.append(x+y)
b.append(x-y)
a.sort()
b.sort()
answer = max(a[-1] - a[0], b[-1] - b[0])
print(answer)
이 또한 snuke 님의 답변 그대로.
max의 식변형은 공부가 되었습니다.
Reference
이 문제에 관하여(AtCoder ABC 178 Python (A~E)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/K_SIO/items/29896691aaf068ecbecb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
x = int(input())
if x == 0:
print(1)
else:
print(0)
답변
a, b, c, d = map(int, input().split())
answer = 0
if a < 0 and 0 <= b:
if c < 0 and 0 <= d:
answer = max(a * c, b * d)
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * c
elif 0 <= a and 0 <= b:
if c < 0 and 0 <= d:
answer = b * d
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * d
elif a < 0 and b < 0:
if c < 0 and 0 <= d:
answer = a * c
elif 0 <= c and 0 <= d:
answer = b * c
elif c < 0 and d < 0:
answer = a * c
print(answer)
if문을 쓰고 있는 도중에, 「max라고 하면 안 된다・・・」라고 생각하면서도, 되돌리지 않고 전 경우 나누기를 썼습니다.
이렇게 경우는 하지 않아도 아래와 같이 max로 풀면 끝입니다.
a, b, c, d = map(int, input().split())
answer = max(a*c, a*d, b*c, b*d)
print(answer)
C. Ubiquity
답변 (나중 AC)
MOD = 10**9 + 7
N = int(input())
# 少なくとも0がはいる
in0 = 10**N - 9**N
# 少なくとも0がはいる
in9 = 10**N - 9**Nu
# 0または9がはいる
0and9 = 10**N - 8**N
answer = in0 + in9 - 0and9
print(answer%MOD)
목구멍까지 대답이 나오고 있었습니다만, 왠지 대답을 도출하지 않고.
보통으로 셀 수는 없기 때문에, 전체로부터 뺄셈을 실시하는 것으로 산정합니다.
아래 이미지 다이어그램.
D. Redistribution
답변(후일)
MOD = 10**9 + 7
S = int(input())
dp = [0] * (S+1)
dp[0] = 1
for i in range(1, S+1):
for j in range(0, (i-3)+1):
dp[i] += dp[j]
dp[i] %= MOD
print(dp[S])
snuke 님의 답변 그대로.
DP
그렇다고 알았던 곳까지 밖에 모른다.
해설 보면, 「확실히 네」라고 알지만, 실제로 제한 시간내에 풀리라고 하면 DP
는 풀 수 없습니다.
수업이 부족하다・・・.
E. Dist Max
답변(후일)
N = int(input())
a, b = [], []
for i in range(N):
x, y = map(int, input().split())
a.append(x+y)
b.append(x-y)
a.sort()
b.sort()
answer = max(a[-1] - a[0], b[-1] - b[0])
print(answer)
이 또한 snuke 님의 답변 그대로.
max의 식변형은 공부가 되었습니다.
Reference
이 문제에 관하여(AtCoder ABC 178 Python (A~E)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/K_SIO/items/29896691aaf068ecbecb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
MOD = 10**9 + 7
N = int(input())
# 少なくとも0がはいる
in0 = 10**N - 9**N
# 少なくとも0がはいる
in9 = 10**N - 9**Nu
# 0または9がはいる
0and9 = 10**N - 8**N
answer = in0 + in9 - 0and9
print(answer%MOD)
답변(후일)
MOD = 10**9 + 7
S = int(input())
dp = [0] * (S+1)
dp[0] = 1
for i in range(1, S+1):
for j in range(0, (i-3)+1):
dp[i] += dp[j]
dp[i] %= MOD
print(dp[S])
snuke 님의 답변 그대로.
DP
그렇다고 알았던 곳까지 밖에 모른다.해설 보면, 「확실히 네」라고 알지만, 실제로 제한 시간내에 풀리라고 하면
DP
는 풀 수 없습니다.수업이 부족하다・・・.
E. Dist Max
답변(후일)
N = int(input())
a, b = [], []
for i in range(N):
x, y = map(int, input().split())
a.append(x+y)
b.append(x-y)
a.sort()
b.sort()
answer = max(a[-1] - a[0], b[-1] - b[0])
print(answer)
이 또한 snuke 님의 답변 그대로.
max의 식변형은 공부가 되었습니다.
Reference
이 문제에 관하여(AtCoder ABC 178 Python (A~E)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/K_SIO/items/29896691aaf068ecbecb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
N = int(input())
a, b = [], []
for i in range(N):
x, y = map(int, input().split())
a.append(x+y)
b.append(x-y)
a.sort()
b.sort()
answer = max(a[-1] - a[0], b[-1] - b[0])
print(answer)
Reference
이 문제에 관하여(AtCoder ABC 178 Python (A~E)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/K_SIO/items/29896691aaf068ecbecb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)