📍 문제

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
📍 입력
첫째 줄에 N(1 ≤ N ≤ 9 × 1018)이 주어진다.
📍 해결순서 및 주의사항
1. 해결순서라고 하기에는 일단 규칙부터 찾아야 한다는 생각밖에 없었당,,
2. 일단 6 이하의 숫자는 무조건 2개이고 6 이상의 숫자의 규칙은 아래와 같다
3. 예로 34를 보면 34-17-11-5=1이고 28을 예로 들면 28-15-9-3=1이다
4. 34-17(=11+6)-11(=5+6)-5=1 →34-11-6-5-6-5=34-11-5*2-6*2=1

'[C++] 백준' 카테고리의 다른 글
| [백준 1235번] 학생 번호 (0) | 2023.08.02 |
|---|---|
| [백준 1316번] 그룹 단어 체크 (0) | 2023.08.02 |
| [백준 1302번]베스트셀러 (0) | 2023.08.02 |
| [백준 2776번] 암기왕 (0) | 2023.08.02 |
| [백준 1966번] 프린터 큐 (0) | 2023.07.26 |
댓글