c-b가 0인 상황을 고려하지 못해 런타임 에러를 발생 시켰다.
c-b가 0일 경우 분모에 0이 들어가 division by zero 에러를 발생 시킨다. 주의!
a, b, c = map(int, input().split())
if c-b <= 0:
print('-1')
else:
print(int(a/(c-b) + 1))
각 차원의 마지막 수는 1 + 6 n (n + 1)/2이다. (등차수열의 합)
따라서 입력 값이 마지막 수와 비교하여 같거나 작아지는 경우를 찾아서 답을 출력했다.
N = int(input())
i = 1
while True:
# 입력한 수와 각 차원의 마지막 수와 비교하여 입력한 수가 같거나 작을 때 반복문을 벗어난다.
if N <= 3 * (i + 1) * i + 1:
break
i+=1
# N이 1인 경우는 예외 처리를 해줘야 한다. ( 1로 출력되어야 하기 때문)
if N == 1:
print(1)
else:
print(i+1)
X = int(input())
# 입력 값이 몇번째 사이클에 포함되는 지 체크
# 여기에서 사이클이란 d가 1, a1이 1인 등차수열의 합
i = 1
while True:
sum = i * (i + 1) / 2
if X <= sum:
break
i += 1
# i가 홀수인지 짝수인지 판별 (이에 따라 분모 분자의 값이 뒤바뀜)
if i % 2 == 0:
b = sum - X + 1
a = (i+1) - b
elif i % 2 == 1:
a = sum - X + 1
b = (i+1) - a
# 정답 출력
print(str(int(a)) + '/' + str(int(b)))
import math
A, B, V = map(int, input().split())
# 낮까지의 움직임이 막대기의 크기와 같은 경우를 올림하여 추출
i = math.ceil((V-A) / (A-B))
# 만약 올림으로 인해 i번째에서 이미 정상에 올랐는지 체크!
if V - (A - B)*(i - 1) - A <= 0:
print(i)
# 아닐 경우 i+1번째에서 정상에 오르게 된다.
else:
print(i+1)
import math
T = int(input())
for i in range(T):
H, W, N = map(int, input().split())
#호수 계산
room = math.ceil(N / H)
#층수 계산
floor = N - (H * (room-1))
#호수가 10보다 작을 시 앞에 0붙여주기
strRoom = str(room)
if room < 10:
strCycle = '0' + strRoom
print(str(floor) + strRoom)
T = int(input())
for i in range(T):
k = int(input())
n = int(input())
# 0층의 n호실까지의 인원수를 리스트에 담아줌
calcList = list(range(1, n+1))
# 반복문을 돌며 한층 위의 인원수를 담아줄 리스트
changeList = list()
# 입력한 층 수 만큼 반복한다.
for t in range(k):
# 1부터 호수 + 1 까지 반복
for r in range(1, len(calcList)+1):
calc = 0
# 호수만큼 이전 층의 인원수를 모두 더해주고 changeList에 넣어준다
for d in range(r):
calc += calcList[d]
changeList.append(calc)
# 0층 리스트를 이전 층 리스트로 바꿔준다. 그 후 changeList 빈 리스트로 초기화
calcList = changeList
changeList = list()
print(calcList[n-1])
아직 알고리즘 이론을 공부하지 않았기 때문에, 최대한 알고 있는 지식을 바탕으로 풀었다.
N = int(input())
# 아래에 담긴 경우가 가장 적은 수의 봉투를 가져갈 수 있는 경우
five = int(N / 5)
three = int((N - (5 * five)) / 3)
ans_list = list()
# 만약 위 조건을 충족하지 못할 경우
# 5와 3의 배수의 합인 설탕 봉투 수들을 리스트에 담아 리스트 내 최솟값을 출력한다.
if (N - (5 * five)) % 3 != 0:
i = 0
while True:
if (N - (5 * i)) % 3 == 0:
three = int((N - (5 * i)) / 3)
# 3의 배수가 음수가 아닐 경우만 추가 (체크)
if three > 0:
ans_list.append(three + i)
if N - (5 * i) < 0:
if len(ans_list) != 0:
print(min(ans_list))
break
else:
print(-1)
break
i += 1
else:
print(five + three)
다른 언어에서는 메모리가 터져 에러가 발생한다고 한다.
파이썬은 왜 메모리가 터지지 않는까?
그 이유는 파이썬은 Arbitrary-precision arithmetic을 사용하여 오버플로우가 없기 때문이다.
arbitrary-precision은 사용할 수 있는 메모리양이 정해져 있는 기존의 fixed-precision과 달리, 현재 남아있는 만큼의 가용 메모리를 모두 수 표현에 끌어다 쓸 수 있는 형태
출처: https://ahracho.github.io/posts/python/2017-05-09-python-integer-overflow/
A, B = map(int, input().split())
print(A + B)