728x90
파이썬
브1 달팽이는 올라가고 싶다
오답 코드
1 2 3 4 5 6 7 8 9 10 | A, B, V = map(int, input().split()) result = 0 cnt = 0 while(True): result += A cnt += 1 if result >= V: break result -= B print(cnt) | cs |
처음에 더했다 빼면서 V미터에 도달할 때까지 무한루프를 돌리는 코드를 짰는데 시간초과가 떴다.
맞은 코드
1 2 3 4 5 6 7 8 9 10 11 | A, B, V = map(int, input().split()) result = 0 cnt = 0 if A >= V: cnt = 1 else: if (V - A) % (A - B) != 0: cnt = (V - A) // (A - B) + 2 else: cnt = (V - A) // (A - B) + 1 print(cnt) | cs |
루프 대신에 나누기를 이용해서 소요 기간을 계산해주는 연산을 만들었다.
A가 V 이상이면 하루이므로 1을 출력하고 아닐 경우, V에서 올라가기만 하는 마지막날을 제외하고 올라가는 거리와 미끄러지는 거리의 차를 나눠준 후에 제외한 마지막날을 합해주기 위해 1을 더해준다.
여기서 나눠줬을 때 나머지가 생기는 경우 하루가 더 필요하기에 2를 더해준다.
브1 이항 계수1
맞은 코드
1 2 3 4 5 6 7 8 9 10 | N, K = map(int, input().split()) result = 1 if not (K==0 and K==N): temp = 1 for i in range(N, N-K, -1): result *= i for i in range(K, 1, -1): temp *= i result //= temp print(result) | cs |
이 문제는 이항 계수 즉 수학적 개념과 공식을 알고 있어야 풀 수 있다.
예제에서 N이 5, K가 2일 때 답이 10이다.
여기서 5C2=10이므로 NCK임을 알 수 있다.
K가 0 혹은 N일 때를 제외하고 NPK/P!이므로 이를 for문을 이용하여 풀었다.
728x90
'Python' 카테고리의 다른 글
| 211118 백준 코딩연습 파이썬 1110 더하기 사이클 (0) | 2021.11.18 |
|---|---|
| 211117 백준 코딩연습 파이썬 2609 최대공약수와 최소공배수, 2751 수 정렬하기 2 (0) | 2021.11.17 |
| 211115 백준 코딩연습 파이썬 2839 설탕 배달 (0) | 2021.11.15 |
| 211112 백준 코딩연습 파이썬 15829 Hashing (0) | 2021.11.12 |
| 211111 백준 코딩연습 파이썬 2775 부녀회장이 될테야, 2798 블랙잭 (0) | 2021.11.12 |




최근댓글