[백준/파이썬] 2292번 벌집 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 2292번 벌집
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
위의 그림과 같이 육각형으로 이루어진 벌집이 있다.
그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.
숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
- 자세한 문제 및 입출력 예제는 상단의 문제 출처(백준 홈페이지)를 참조해주세요
코드
n = int(input())-2
pt=1
step=6
while(n>=0):
pt += 1
n -= step
step += 6
print(pt)
설명
규칙성을 발견해내면 쉬운 문제입니다.
벌집은 육각형 구조로 되어있으므로 하나의 방을 6개의 방이 둘러싼 형태를 갖게 됩니다.
가장 중앙의 방이 1일 때, 1번째 둘레는 총 6개의 방으로 구성되어있고, 2번째 둘레는 12, 3번째는 18… n번째 둘레는 n*6개의 방으로 구성되어 있음을 알 수 있습니다. 여기서, 방향은 관계 없으므로 목적지가 몇번째 둘레에 있는지만 구해낸다면, 바로 답을 알 수 있습니다. 반복문 외에 수열로도 풀 수 있을 것 같네요. 일반항을 구해서 푼다면 더 빨리 구할 수 있을 것입니다.
댓글남기기