본문 바로가기

코드연습/BOJ

BOJ 2292 : 벌집

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