A, B, C = map(int, input().split())
if B >= C: #손익분기점이 존재하지 않을 때는 고정비용과 상관 없이 가변비용(B)이 노트북의 판매가격(C)보다 크게 되면 존재하지 않는다. 그렇지 않고 판매가격(C)보다 낮은 경우에는 되게 많이 팔아야겠지만 손익분기점이 결국엔 생긴다.
print(-1)
else:
print(A//(C-B) + 1) #처음 질문을 보고 판매량을 N으로 두고, 단순하게 식을 세우면 총 수입 = 고정비용 + 가변비용(A + B * N < C * N)이지만 손익분기점이 발생하는 때의 판매량을 식으로 나타내면 N= A/(C-B)이다. 하지만 이 식은 손익분기점인 때가 되는 것이고, 최초로 이익이 발생하는 시점은 이 식에서 판매량을 보다 하나 더 더해야 한다.
N = int(input()) #주어지 벌집의 방 번호
nums_pileup = 1 #1번방을 간다고 해도 1개의 방을 거치므로, 방의 개수는 1개부터 시작
cnt = 1 #몇 개의 방을 거쳤는지 카운트
while N > nums_pileup: #주어진 방의 번호가 1번방보다 크다면 아래 내용을 반복해라. => 작다면 멈추어라.
nums_pileup += 6 * cnt #1개의 방에서 입력받은 방으로 가야하므로, 방 n-1개를 지날 때마다 이전의 방 개수 + 6의 배수만큼의 방 호수들을 갈 수 있으므로 방의 개수는 방의 개수 + 방을 지나온 방의 개수(n - 1 = cnt)에 6을 곱한 값이다.
cnt += 1 #지나쳐 온 방의 개수는 + 1이 된다.
print(cnt)
처음엔 벌집의 방들이 규칙을 가지고 n번을 거치면 += 6배수만큼의 방들을 n번만에 갈 수 있다는 사실을 알고,
room_list라는 리스트를 만들어 그곳에 6의 배수만큼 들어 있는 리스트들을 차례대로 두고, 주어진 값이 주어지면 이 값은 room_list에서 몇번째 리스트에 들어가 있을까 물어본 다음 그 리스트가 room_list에서의 위치값에 + 1을 할 생각이었습니다.
꽤 잘 생각했다고 했는데 코딩으로 구현하는데 애를 먹었습니다.
우선 N번방의 값이 주어지면 for문을 2번에 걸쳐 room_list에서 그 값을 찾아내야 하고, 해당 값이 들어가 있는 리스트의 위치값을 room_list에서 다시 찾아내야 한다는 생각을 갖고 있었지만, for문으로는 무한루프가 안될뿐더러 대신 while문을 사용해야 하기 때문에 실패했습니다,,
room_list = [[1], [2~7], [8,19],..]
x = int(input())
num_list = []
num = 0
num_count = 0
while num_count < x:
num += 1
num_count += num
num_count -= num
if num % 2 == 0:
top = x - num_count
under = num - i + 1
else:
top = num - (x - num_count) + 1
under = x - num_count
print(f"{top}/{under}")
import math
A, B, V = map(int, input().split()) # A= 올라가는 길이, B= 떨어지는길이, V= 나무높이
day = math.ceil((V-A)/(A-B)) + 1
print(day)
#날짜(day)를 계산한는 식을 작성하기 전, 먼저 나무 높이를 기준으로 하는 식을 작성해보면 (A-B)*day +A = V와 같습니다.
#A만큼 올랐다 B만큼 떨어지기를 반복하기 때문에
#A-B의 거리만큼 올라가는 것을 day큼 반복하고, 마지막 날에는 A만큼 올라가고서 더 이상 떨어지지 않기 때문입니다.
#나무높이인 V를 기준으로 작성한 식을 응용하여 나무에 도달하기까지 걸린 기간을 구하면 위에 작성한 코드와 같습니다.
#나무높이에서 마지막 날에 올라간 거리를 뺀 수에서 A-B를 나누면 마지막에 A만큼 올라간 하루를 제외한 날짜를 구할 수 있습니다.
1) math모듈의 ceil함수, floor함수
ceil
함수는 소수를 올림하는 정수를 반환하고,floor
함수는 소수를 내림하는 정수를 반환할 수 있습니다.
test_case = int(input())
for _ in range(test_case):
H, M, N = map(int, input().split())
num = N // H + 1 #방 호수는 주어진 순번 N값을 층수H로 나눈 값인 몫에 1을 더한 값이다.
floor = N % H #층 수는 주어진 순번 N값을 층수H로 나눈 나머지 값의 정수부분만큼이다.
if N % H == 0: #H가 N의 배수일 경우 나머지 값(=floor)이 0이 되므로
num = N // H #방 호수는 주어진 순번 N값을 층수H로 나눈 값인 몫이고,
floor = H #층 수는 H값의 배수 즉, 꼭대기 층으로 H값이다.
print(f'{floor * 100 + num}')
T = int(input())
for _ in range(T):
floor = int(input())
num = int(input())
f0 = [x for x in range(1, num)] #0층의 리스트를 1부터 주어진 num의 값 -1만큼 x를 반복해 만든다. ex)num = 3이면, f0 = [1,2,3]이다.
for k in range(floor): #다음 나올 아래 내용을 k로 두고, k를 주어진 floor의 값만큼 반복해라.
for i in range(1, num): #i를 1부터 num - 1만큼 반복해라.
f0[i] += f0[i-1] #f0의 값은 f0의 값에 f0의 i-1번째 오는 값을 더한 값으로 업데이트된다. ex)floor =2, num = 3이고, 첫번째 for i문을 통해 f0을 반복했으면, f0[1]은 반복되기 전 f0의 1번째 있는 값에서 0번째 값은 반복을 통해 업데이트 됐으니 반복된(업데이트된) 첫번째 반복 f0의 0번째 값을 더한 값이 된다.
print(f0[-1]) #num만큼 반복했으니 나열된 f0 리스트를 보면 마지막 값이 구하고자 하는 값이 된다.
N = int(input())
bag_cnt = 0
while N >= 0: #주어진 설탕의 무게 N값이 0이 될 때까지 -3kg씩 해서 5의 배수까지 맞추고, -3kg을 한 번 할 때마다 봉지개수 bag_cnt에 1씩 더하는 반복을 할 것이다.
if N % 5 == 0: #주어진 설탕의 무게가 5의 배수일 경우,
bag_cnt += (N // 5) #봉지의 개수는 설탕의 총무게 N값을 5로 나눈 몫이다.
print(bag_cnt)
break
N -= 3
bag_cnt += 1
else:
print(-1)
A, B = map(int, input().split())
print(A+B)
1) arbitrary precision
arbitrary precision
인데, 이는 사용할 수 있는 메모리양이 정해져 있는 기존의 fixed-precision
과 달리, 현재 남아있는 만큼의 사용가능한 메모리를 모두 수 표현에 끌어다 쓸 수 있는 형태를 이야기하는 것 같습니다. 역시 잘 모르겠습니다.