본문 바로가기
[C++] 백준

[백준 27436번] 벌집 2

by 말하는 감자 처음 보세요? 2023. 8. 2.

📍 문제

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 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

댓글