[2292] 벌집
해결 포인트
시작(1)로부터 주위에 둘러싼 외벽의 방 갯수가 갖는 규칙을 찾아보면 쉽게 풀이 가능하다.
시작(1)은 방하나 그자제라고 생각하면된다.
답안
a = int(input())
if a == 1: # 처음 1은 방 한개 그 자체이다.
print(a)
else: # 이후 외벽들은 6의 배수로 증가
cnt = 1
b = 1
while b < a:
b += cnt*6 # 벌집의 갯수를 파악하기위함
cnt += 1 # 외벽의 갯수를 파악하기위함
print(cnt)
a가 1인 경우 1개의 방 그 자체이기 때문에 시작으로 조건을 걸어준다.
이후 외벽 부턴 6의 배수로 증가한다는 점을 확인할 수 있다.
b에는 방의 갯수를 알기위해 6의 배수를 계속 더해 대입해주고
그때 마다 카운트를 통해 외벽의 갯수를 파악한다.
[2869] 달팽이는 올라가고 싶다
해결 포인트
로직 구현은 쉽게 가능할것이다...
그러나 문제는 시간초과이다.
for문 while문 반목문을 사용하면 안된다.
로직을 간단하게 식으로 바꿔줘야한다.
답안
import sys
a,b,v = map(int,sys.stdin.readline().split())
cnt = (v-b)/(a-b)
if cnt == int(cnt):
print(int(cnt))
else:
print(int(cnt)+1)
시간 제한이 걸려있기에 reline을 사용해줬다.
a = 올라감
b = 내려감
v = 총 높이
기본적으로는 v / a-b 를 떠오르겠지만 밤에 내려간다는것을 고려했을때 애초에 v(총 높이)에서 b(내려감)을 빼주고 시작하자.
나눗셈을 진행하면 소숫점이 나올것이다.
2.0 이면 2일 걸리는거지만 2.1은 3일 걸린다는것이다. int형으로 소숫점을 버리고 +1 시켰다.
'코딩 > 백준알고리즘' 카테고리의 다른 글
[파이썬] 12. 기본수학...백준(1978, 2581, 11653, 1929) (0) | 2022.09.14 |
---|---|
[파이썬] 11. 기본수학...백준(10250, 10757) (0) | 2022.09.13 |
[파이썬] 9. 기본수학...백준(1712) (0) | 2022.09.10 |
[파이썬] 8. 문자열...백준(5622, 2941, 1316, 1157) (0) | 2022.09.09 |
[파이썬] 7. 함수+문자열...백준(1065, 11654, 11720, 10809, 2675, 1152, 2908) (0) | 2022.09.08 |