본문 바로가기
알고리즘-python/백준 문제

[백준/2292/파이썬(Python3)] 벌집

by 빅데이터1020 2021. 7. 7.
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