728x90
#1712
a,b,c=map(int,input().split())
cnt = 0
while True:
cnt += 1
if b>=c:
print(-1)
break
if a+(b*cnt) < c*cnt:
print(cnt)
break
처음에는 위와 같은 방법으로 값들을 입력받고 우선 b>=c인 경우 비용이 판매가와 같거나 크기 때문에 손익분기점이 존재하지 않는다. while문을 통해 계속 counting을 진행하고 cnt에 따라 손익분기점을 넘는 순간에 cnt값을 출력하고 break문을 통해 while문을 끝냈다. 이는 visual studio에서는 문제없이 실행이 되었으나 백준 제출란에서는 시간초과로 오답철가 되었다. 이는 수학적인 계산을 통해 실행시간을 줄이라는 의미로 받아드렸다. 이를 보완하여 아래와 같은 코드를 작성하니 문제없이 성공하였다.
a, b, c = map(int, input().split())
if b>=c:
print(-1)
else:
print(int(a/(c-b)+1))
이 코드에서는 counting 프로세스를 제거하였고 몫을 구하는 / 연산자를 이용하여 한번에 출력을 하였다.
#2292
a = int(input())
num = 1
cnt = 1
while a > num:
num += 6*cnt
cnt += 1
print(cnt)
육각형 벌집은 중앙은 1개 그 다음은 6개의 방 그 다음은 12개의 방으로 둘러 쌓여져있다.
따라서 중앙에서 밖으로 나가면 6*n개의 방으로 둘러 쌓여져있음을 알 수 있다.
while문을 이용하여 입력받은 a값이 num보다 클때까지 반복하여 counting을 진행한다.
while문 내부에서는 num에 6*cnt를 더한다. 이때 6*cnt는 위에서 설명한 6*n개의 방을 표현한것이다.
728x90
'Sketch (Programming Language) > Python' 카테고리의 다른 글
Baekjoon Training #14425 (1) | 2022.08.06 |
---|---|
Baekjoon Training #2798 (0) | 2022.07.30 |
Baekjoon Training #10870 (0) | 2022.07.29 |
Baekjoon Training #1978 (0) | 2022.07.24 |
Baekjoon Training #2675/#1157 (0) | 2022.07.20 |