728x90

0. 주어진 문제 

시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초128 MB200049218800547.016%

문제

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




 1. 풀이


벌집의 개수가 n=1일때, a1=1, n=2일때, a2=6*1, n=k일때, ak=6*(k-1)인 수열이다.

이를 활용하여 코드를 짜보았다.


 2. 소스코드


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main(void)
{
    int input,room(1);
    std::cin >> input;
    while(input>0){
        if (input == 1break;
        input -= 6 * room;
        room++;
    }
    std::cout << room << std::endl;
}
cs


 3. 문제 출처


https://www.acmicpc.net/problem/2292


 4. 참고



'<백준> > |c++| easy' 카테고리의 다른 글

백준 10250 - ACM 호텔  (0) 2019.02.20
백준 1193 - 분수찾기  (0) 2019.02.19
백준 2941 - 크로아티아 알파벳  (0) 2019.02.18
백준 5622 - 다이얼(for문을 단축시키자)  (0) 2019.02.18
백준 2908 - 상수  (0) 2019.02.18

+ Recent posts