블로그가 백준 풀이로 가득 차버릴 것 같은 느낌이 들지만 그래도 어쩔 수 없다.
쓰면서 이해해야 더 머리에 잘들어온다 ^^,,
아무튼 이번 문제는 해당 풀이의 알고리즘을 찾으면 쉽게 풀 수 있는 문제이다.
해당 문제를 조금 더 쉽게 이해할 수 있을까 생각하다 요러한 방법을 생각했다.
해당 벌집은 칸이 바뀔때 아래에서 시계방향으로 증가한다. 또한, 칸은 6의 배수만큼 증가하는데 아래와 같이 반복된다는 것을 알 수 있다.
- 1
- 1 + 6 * 1 -> 7
- 7 + 6 * 2 -> 19
- 19 + 6 * 3 -> 37
...생략
위와 같이 칸을 움직이는 개수의 수를 알 수 있다. 그러면 위와 같이 반복되는 부분을 코드로 구성하자면
while num > numbox:
numbox += 6 * cnt
cnt += 1
위와 같이 코드를 작성할 수 있으며, 입력받은 num 값이 다음칸의 최댓값보다 클 경우 다음 칸으로 넘어가지 않기 때문에 반복문을 끝낸다.
numbox는 결국 해당하는 칸의 최댓값이며 입력받은 값이 최대값 보다 크다면 loop를 진행하기 때문에 입력받은 값이 cnt의 증가를 통해 해당 값이 몇칸을 움직였을때인지 알아낼 수 있다.
num = int(input())
numbox = 1
cnt = 1
while num > numbox:
numbox += 6 * cnt
cnt += 1
print(cnt)