본문 바로가기
프로그래밍/Python

[파이썬] 백준 2292번 벌집 문제 풀이 python

by 아임코딩 2024. 2. 6.
728x90
반응형

문제 설명

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

 

문제 링크

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

 

2292번: 벌집

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

www.acmicpc.net

 

입출력 예시

 

프로그램 코드

N = int(input())	#N 입력

cnt = 1				#각 층 별 방 수
num = 0				#층 별 증가하는 방 수

while cnt < N:	#N 이 포함된 층 찾기
    num += 6
    cnt += num

print(num // 6 + 1)

 

프로그램 코드 설명

문제에 주어진 방을 분석해보면 다음과 같다.

1겹 방 : 1

2겹 방 : 2, 3, 4, 5, 6, 7

3겹 방 : 8 ~ 19

4겹 방 : 20 ~ 37

5겹 방 : 38 ~ 61

 

1겹 방 개수 : 1

2겹 방 개수 : 6

3겹 방 개수 : 12

4겹 방 개수 : 18

5겹 방 개수 : 24

 

이렇게 방의 개수는 6의 배수로 커지는 것을 확인할 수 있다.

이를 코드에서는 num에 6의 배수를 저장해가면서 방을 늘려줬다.

cnt 는 현재 총 방의 개수이다.

반복문은 총 방의 개수가 N 보다 작은 동안 반복한다.

728x90
반응형