[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 시켰다.

 

+ Recent posts