728x90
위와 같은 벌집에서 입력되는 해당 번호를 찾아가려면 최소 몇 개의 방을 지나야 하는지를 계산하는 문제이다.
if __name__ == '__main__':
y = int(input())
n = 1
count = 0
while n:
if 3*count*(count+1) + 1 < y <= 3*n*(n+1) + 1:
print(n+1)
break
elif y == 1:
print(n)
break
else:
count = n
n+=1
먼저 수 계산으로 등차수열이 있는 1 ,7, 19, 37 ... 을 풀어서 y = 3n(n+1) + 1 임을 얻어냈다. 이 수식을 바탕으로 계산식을 넣고 그 사이에 들어있는 count값을 출력하도록 했다. 처음에는 y = 1일 때의 조건을 걸지 않아서 시간 초과 실패를 했는데, 다른 풀이는 다 맞는데 1 예시에서 자꾸 틀리는 걸 발견하고 해결했다.
'코드연습 > BOJ' 카테고리의 다른 글
BOJ 2869 : 달팽이는 올라가고 싶다. (0) | 2022.04.11 |
---|---|
BOJ 1193 : 분수찾기 (0) | 2022.04.11 |
BOJ 1316 : 그룹 단어 체커 (0) | 2022.04.08 |
BOJ 2941 : 크로아티아 알파벳 (0) | 2022.04.08 |
BOJ 2908 : 상수 (0) | 2022.04.07 |