[백준][Python] 2292. 벌집
Bronze Ⅱ 🔗2292. 벌집
📝문제 요약
문제
.png)
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.
숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오.
예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
입력
첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.
출력
입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.
✏️문제 풀이
- 문제풀이는 주석으로 처리
n = int(input())
# 층의 갯수
floor = 1
# 각 층의 방의 갯수
room = 1
# 각 층의 방의 갯수를 저장하는 리스트
room_list = [1]
while True :
# 전체 방의 갯수가 입력값보다 작으면
if sum(room_list) < n :
# floor가 1일 경우에는 층 +1, 방 +5, room list에 room의 값 추가
if floor == 1 :
floor += 1
room += 5
room_list.append(room)
# foor가 1이 아니면 층 +1, 방 +6, room list에 room의 값 추가
else :
floor += 1
room += 6
room_list.append(room)
# 전체 방의 갯수가 입력보다 작지 않으면
else :
# 층수를 출력하고 실행 중지
print(floor)
break
💯제출 코드
n = int(input())
floor = 1
room = 1
room_list = [1]
while True :
if sum(room_list) < n :
if floor == 1 :
floor += 1
room += 5
room_list.append(room)
else :
floor += 1
room += 6
room_list.append(room)
else :
print(floor)
break
댓글남기기