728x90
1. 문제
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
⭐문제요약
#입력값은 N(1 ≤ N ≤ 1,000,000,000). N이 1에서 얼마나 떨어져있는가를 출력해주면 된다.
처음엔 벌집 그림만 보고 엥? 이게 왜 브론즈? 했는데
천천히 살펴보니 규칙이 숨어있었다.
2. 풀이
벌집은 어찌보면 여러개의 원판으로 볼 수 있다.
몇 번째 레이어에 속해있는지 안다면 1에서 얼만큼 떨어져 있는지 알 수 있다.
def find_layer(n):
if n == 1:
return 1
layer = 0 #시작 레이어를 0으로 초기화
count = 1 #최소 count가 1임
while n > count:
layer += 1 # 바로 다음 레이어로 이동
count += 6 * layer # 다음 레이어의 마지막 방 번호
return layer + 1 # 현재 레이어에 +1 반환
N = int(input())
print(find_layer(N))
728x90
'알고리즘&자료구조 > Algorithm' 카테고리의 다른 글
프로그래머스 87377 - 교점에 별 만들기 (0) | 2024.04.18 |
---|---|
[백준 2563] 색종이 (0) | 2024.02.15 |
[백준 2903] 중앙 이동 알고리즘 (0) | 2024.02.05 |
[백준 2745] 진법 변환 (1) | 2024.02.05 |
[백준 2566] 최댓값 (0) | 2024.02.05 |