Baekjoon 2292번 벌집 python
https://www.acmicpc.net/problem/2292
getbee=int(input()) roomNum=1 value=1 n=0 for i in range(getbee): n += i value = 6*n+1 roomNum += 1 if value >= getbee: print(roomNum-1) break
다양한 방법이 있겠지만 필자가 발견한 규칙은 다음과 같다.
1번째 방 : 1 => 1개
2번째 방 : 2 ~ 7 => 6개
3번째 방 : 8 ~ 19 => 12개
4번째 방 : 20 ~ 37 => 18개
5번째 방 : 38 ~ 61 => 24개
각 방에 따라 그 갯수가 등차수열임을 볼 수 있다.
또한
각 방마다 마지막 숫자만 나열하면 1,7,19,37,61 etc 로
자세히 살펴보면 6n+1의 형식을 띠는 것을 확인 할 수 있다.
1 = 6 * 0 + 1
7 = 6 * 1 + 1
19 = 6 * 3 + 1
37 = 6 * 6 + 1
61 = 6 * 10 + 1
이 때 n의 값이 등차 수열로 증가함을 볼 수 있다.
0 (+1) 1 (+2) 3 (+3) 6 (+4) 10 ```
이런 규칙을 토대로 우리가 얻은 숫자를 방 구성하는 최대 숫자보다 적으면 그 방의 갯수만큼 프린트하는 코딩을 하면 우리가 원하는 값을 얻을 수 있다.
더 추가 설명이 필요하다면 댓글로 알려주면 설명하겠지만 종이에 한 번 써서 등차수열을 확인하면 금방 이해할 수 있지 않을까한다.
참고로 N=1에 대한 출력을 for문에 한 번에 하고싶었기 때문에 미리 roomNum=1로 초기값을 주었다는 점을 알린다.
ALL RIGHT RESERVED TWINSTARINFO