728x90
0. 주어진 문제 |
벌집 성공
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 20004 | 9218 | 8005 | 47.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 == 1) break; 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 |