[백준] 2292번 벌집 파이썬 풀이

Dev_ch·2023년 3월 16일
1

블로그가 백준 풀이로 가득 차버릴 것 같은 느낌이 들지만 그래도 어쩔 수 없다.
쓰면서 이해해야 더 머리에 잘들어온다 ^^,,

아무튼 이번 문제는 해당 풀이의 알고리즘을 찾으면 쉽게 풀 수 있는 문제이다.
해당 문제를 조금 더 쉽게 이해할 수 있을까 생각하다 요러한 방법을 생각했다.

해당 벌집은 칸이 바뀔때 아래에서 시계방향으로 증가한다. 또한, 칸은 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)
profile
내가 몰입하는 과정을 담은 곳

0개의 댓글