우당탕탕 파이썬 with 하루하나 알고리즘

백준 2292 파이썬 - 고딩 추억을 되살리는 수열 식 세우기

hyxndy 2022. 4. 14. 20:14

백준 2292번 - 벌집 with Python

Q.

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

 

입력> 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.

출력> 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.

 

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

 

2292번: 벌집

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

www.acmicpc.net

 


어우.. 갑자기 난이도 급 상승..!!! 딱 문제를 보자마자 이건 수열이다!라는 생각이 들었는데,

고1 때 배운 수열이 생각이 나지 않았걸랑요.. 벌써 5년 전 일이기 때문...

그래서 구글링을 열심히 하면서 코드를 짰다..!!

 

N = int(input())

count = 1 #지나는 방의 수
endValue = 1 #중앙의 방이 1이므로
d = 6 #공차 = 6

while (N > endValue):
	count +=1 #지나는 방 수 1추가
	endValue += d #다음 수열의 마지막 수
 	d += 6 #6씩 늘어남
    
print(count)

이렇게 코드를 짜주면 지나는 방의 수를 구할 수 있다.