728x90
728x90
https://www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
벌집이 층마다 가지고 있는 최대값을 살펴보면 1, 7, 19, 37, 61, 91····으로 이루어져 있다.
이는 이전 값에 +6, +12, +18, +24, +30···· 씩을 더한 값이다. 또한 이는 6의 배수만큼씩 늘어난 값이다.
리스트에 각 껍데기마다 가지고 있는 최대 주소를 저장한다.
i와 n을 이용해 for문과 유사한 기능을 구현했다. 그냥 for문을 사용할까 했는데.. while을 사용해봤다.
i가 1씩 늘어날 때마다 n과 곱해 이전 껍데기 최대 주소에 더해줬다. n을 6으로 설정했기 때문에 ixn은 6의 배수가 된다.
Q = int(input())
layer = [1] #layer 리스트에 껍데기의 최대 주소를 저장. layer[0]은 1이며, 첫 껍데기를 의미함
i = 1
n = 6
while True:
a = len(layer) #이전 껍데기의 최대 주소를 알아내기 위해 껍데기 수 조사
if Q <= layer[a-1]: #껍데기 수에서 1을 빼야 리스트 순서와 맞음. layer[0]이 첫 껍데기니까.
print(a)
quit()
layer.append(layer[a-1] + i*n)
i = i + 1
728x90
728x90
'[Python]BaekJoon.AC' 카테고리의 다른 글
[Python]백준 BaekJoon.AC 1259 : 팰린드롬수(slice) (0) | 2022.01.06 |
---|---|
[Python]백준 BaekJoon.AC 15829 : Hashing(ord(), 아스키코드) (0) | 2022.01.06 |
[Python]백준 BaekJoon.AC 2798 : 블랙잭(브루트포스 알고리즘) (0) | 2022.01.06 |
[Python]백준 BaekJoon.AC 2775 : 부녀회장이 될테야(2차원 리스트) (0) | 2022.01.06 |
[Python]백준 BaekJoon.AC 2231 : 분해합(브루트포스 알고리즘) (0) | 2022.01.05 |
[Python]백준 BaekJoon.AC 10250 : ACM 호텔(ceil, zfill) (0) | 2022.01.05 |
[Python]백준 BaekJoon.AC 4153 : 직각삼각형(while, 제곱) (0) | 2022.01.04 |
[Python]백준 BaekJoon.AC 1085 : 직사각형에서 탈출(min()) (0) | 2022.01.04 |