SMALL

문제 출처
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
풀이
수열 개념을 활용해서 문제를 풀면 됩니다.
방이 한 개씩 증가할 때 마지막 방의 번호는 1, 7, 19, 37 ... 입니다.
각 항의 차이는 6(n-1) 만큼 나네요
처음에는 아래처럼 함수를 썼더니 시간초과가 나서 실패 했었습니다.
target=int(input())
def std(n):
return 3*(n**2)-3*n+1
n=1
while True:
if std(n-1) < target and target <= std(n):
print(n)
break
else: n+=1
풀이코드 정답
함수를 쓰지 않는 방법으로 해서 정답!
target=int(input())
std=1
n=1
while True:
if target > std:
std+=6*n
n+=1
else:
print(n)
break
LIST
'알고리즘-python > 백준 문제' 카테고리의 다른 글
| [백준/1193/파이썬(Python3)] 분수 찾기 (0) | 2021.07.09 |
|---|---|
| [백준/1927/파이썬(Python3)] 최소힙 (0) | 2021.07.08 |
| [백준/1712/파이썬(Python3)] 손익분기점 (0) | 2021.07.07 |
| [백준/1316/파이썬(Python3)] 그룹 단어 체커 (0) | 2021.07.06 |
| [백준/2941/파이썬(Python3)] 크로아티아 알파벳 (0) | 2021.07.05 |