문제
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
입력
첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.
출력
입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.
예제 입력 1 복사
13
예제 출력 1 복사
3
이 문제에 대한 접근 자체를 하지 못했다.
처음에 규칙을 찾으려고 엄청 노력했었는데 규칙만 찾았을 뿐, 그 이후에 해결을 아예 하지 못했기 때문에 인터넷으로 풀이 과정을 공부하고 해결했다.
https://st-lab.tistory.com/73 이 블로그를 보고 해결할 수 있었다.
이 규칙은 나도 찾은 규칙인데, 아직 많이 부족한가보다..
= 정답 코드 =
오답이라고 하기에도 애매하다.
그냥 이 사람의 풀이를 내 것으로 만들었다.
2~7까지의 숫자는 벌집 갯수가 6개, 그리고 최단 루트는 2
8~19까지의 숫자는 벌집 갯수가 12개, 그리고 최단 루트 3
이런식으로 규칙을 찾은 후, 내가 입력한 n값이 1일 때는 당연히 1을 출력하고
1이 아닐 때, range에 6 * count를 더하면 8, 20, 38 이런식으로 증가하는데
이 값이 n보다 크면 while문이 종료되고 그 count 값이 바로 최단 루트인 것이다.
생각해보면 쉬운 문제였지만 ... 접근을 못했다 더 열심히 노력해야겠다.
'백준 오답노트 > 기본 수학1' 카테고리의 다른 글
백준 - 기본 수학1 2775번 부녀회장이 될테야 / 구글로 해결 (0) | 2022.12.02 |
---|---|
백준 - 기본 수학1 1193번 분수찾기 /구글로 해결 (0) | 2022.12.01 |
백준 - 기본 수학1 2869번 달팽이는 올라가고 싶다 / 구글로 해결 (0) | 2022.12.01 |