푸르미르

[python]2292.벌집 본문

Baekjoon Online Judge

[python]2292.벌집

((•_•)) 2021. 1. 7. 19:21

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

정가운데에 주소가 1번인 방이 위치해 있기 때문에, 주소인 숫자가 점점 커질수록 주어진 값이 주소인 방까지 가는데 지나쳐가는 방의 개수는 증가한다. 단순히 주소가 커지면 커질수록이 아니라 일정 범위 이상 커질 경우에 지나가는 방의 개수가 증가한다. 

 

예를 들어, 1을 중심으로 숫자가 육각형을 그리며 증가한다. 1을 감싸는 육각형을 만드는 벌집의 주소 범위는 2부터 7까지다. 2부터 7사이의 주소인 방으로 가는데에는 1번 벌집에서 부터 모두 2개의 방을 지나야 한다. 8부터 19까지의 주소범위에 속하는 방은 모두 1번 벌집으로 부터 3개의 방을 지나야 한다. 2부터 7까지의 방은 총 6개이고 8부터 19까지의 방은 12개로, 20에서 37주소의 방은 18개로, 주소범위에 속하는 방이 6개씩 늘어나는 등차수열을 보이고 있다. 

이러한 점을 이용해서 코드를 짜보면,

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
num=int(input()) 
a=1 
x=1 #지나가야하는 방의 총 개수 
cd=0 
if num != 1:
    while True:
        cd+=1 
        a=a+6*cd #방 범위
        x+=1
        if num<=a:
            print(x)
            break
else:
    print(1)
 
cs

 

www.acmicpc.net/problem/2292

'Baekjoon Online Judge' 카테고리의 다른 글

[python]10870.피보나치 수  (2) 2021.01.07
[python]10872.팩토리얼  (0) 2021.01.07
[python]1316.그룹 단어 체커  (2) 2021.01.06
[python]2941.크로아티아 알파벳  (0) 2021.01.06
[python]1157.단어 공부  (0) 2021.01.04