본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 2292번 벌집(with python)

by 윤무무 2023. 1. 22.

https://www.acmicpc.net/problem/2292

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

 

1. 내가 작성한 코드
a = int(input())
num = 0
arr = []

for i in range(1,a+1):
  if i == 1:
    arr.append(1)
  elif i in [2,3,4,5,6,7]:
    arr.append(2)
  else:
      for i in range(2,a):
        if len(arr) >= a:
          break
        num += 6 * i
        for j in range(num, (num+6*i)):
          arr.append(i+1)
      
print(arr[a-1])

한 layer 의 첫 index가 8씩 차이나는 것을 이용해서 코드를 작성했으나

 

계속 메모리 초과가 발생했다.

 

결국 구글링 ,,,

 

2. 모범 답안
n = int(input())

total, cnt = 1,1

while n > total:
  total += 6 *cnt
  cnt += 1

print(cnt)

while문을 이용하면 된다.

 

total(총 방의 개수)가 input 값보다 적을 경우 cnt*6 을 증가시켜주면 된다 (그냥 등차수열 이용하면 됨)

댓글