코딩테스트/백준

벌집 Python(백준, 2292)

멍토 2020. 8. 20.

난이도 : Bronze 2

문제번호 : 2292

문제 주소 및 출처입니다.

www.acmicpc.net/problem/2292

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

위의 그림과 같이 육각형으로 이루어진 벌집이 있다.

그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.

숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지

(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오.

예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

입력

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

출력

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


2. 문제풀이

규칙을 찾는 문제이다.

한 칸 옆으로 진행할 대마다 숫자가 6씩 커진다.

보면 2번째 줄은 7이다. 처음꺼 기준으로 6가 늘어났다.

3번째 줄은 19이다. 7에서 12(6+6)가 커졌다.

4번째 줄의 제일 큰 수는 37이다. 19에서 18(6+6+6)이 더해졌다.

규칙을 찾았으니 아래와 같이 공식을 적용하여 해결한다.


3. 소스코드

= int(input())
count = 6
distance = 1
while N > 1:
    N -= count
    distance += 1
    count += 6
 
print(distance)

 

'코딩테스트 > 백준' 카테고리의 다른 글

A + B - 2 JAVA(백준, 2558)  (0) 2020.08.29
검증수 Python(백준, 2475)  (0) 2020.08.28
분해합 Python(백준, 2231)  (0) 2020.08.19
팰린드롬수 Python(백준, 1259)  (1) 2020.08.18
단어공부 Python(백준, 1157)  (0) 2020.08.17

댓글

💲 광고입니다.