[BOJ/백준-Python]2292번 - 벌집

2292번 - 벌집

문제

bee

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

입력

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

출력

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

예제 입력 1

13

예제 출력 1

3

해결할 방법을 생각해보자.💡

첫 줄에서 숫자 N을 받아준다.

N = int(input())

이 문제의 그림을 보면, 중앙에는 1이 위치해있고, 한 단계 나아갈 때마다 6의 배수만큼 방들이 존재하는 것을 확인할 수 있다. 시작점이 가운데가 1, 2단계가 2~7, 3단계가 8~19, 4단계가 20~37 이런식으로 말이다.

어떠한 방을 가던 무조건 시작은 1번 방부터 시작이면서 방 1개를 거치기 때문에 변수를 만들어 1을 저장해주자.

room = 1

아까 6의 배수만큼 늘어나는 것을 확인했으므로 while문을 사용해서 몇개의 방을 지났는지 구해보자. 만약에 1번방이라면 다른 연산을 거칠 필요 없이 바로 room을 출력해주면 되기때문에 N이 1보다 큰 경우에만 while문이 작동하도록 하자. 그리고 숫자 2 이상의 방이라면 배수를 사용해서 room을 늘려가면 된다. 단계가 늘어갈 수록 6의 배수를 N에서 빼주면된다.

예를 들어, 입력 받은 값 N이 36이라면 36 - (1 * 6) - (2 * 6) - (3 * 6) 이런식으로 진행이 될 것이다.

while N > 1:
    N -= (6 * room)
    room += 1

코드에 따르면 room 은 4로, 총 4개의 방을 거쳐간 것을 확인할 수 있다.

이걸 출력하면 문제 해결!

print(room)

코드💻

N = int(input())

room = 1
while N > 1:
    N -= (6 * room)
    room += 1

print(room)

해결 로그

문제 푼 날짜 체크
2022-06-01
   
   
   
   

2022

[web]jQuery 복습 3

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

13 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

14 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

5 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

10 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑