[python_파이썬]백준_2292번 벌집_while 조건_풀이

2024. 4. 23. 21:34코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/OlQbmK-38aQ?feature=shared

 
2292번 벌집 // 1193번 분수찾기 문제에서 주어진 문제에서 while문의 조건을 생각해 내는게 너무 어렵다.
막상 답을 보면 이해가 되지만, 내가 다시 문제를 접했을때 이걸 스스로 해결 할 수 있을까??
혼자서 노트에다가 어떤 공식이 있는지 계속 복습을 했다.

 
circle = 1
temp = 1

while N > temp:
    temp += 6 * circle
    circle += 1
print(circle)

중요한건 while num > temp: 반복 조건
반복 조건에서 1은 예외니까 무시하고,
num이 2~7까지는 temp = 1일때 circle이 2가 됨. => 다시 temp가 7이 나와야 while이 종료가 됨
num이 8~19까지는 temp = 1일때 circle이 2가됨. => 다시 temp가 7이 나와서 circle이 3이 됨 => 다시 temp가 19가 나와야 while이 종료
num이 20~37까지는 위에 반복해서 temp가 37이나와야 circle = 4에서 종료.
 
즉, temp가 아래의 조건으로 계속 나오면 됨. 아래 숫자들의 공통 요소를 찾기 힘듬. 근데 6이란 숫자를 초반에 찾을 수 있음
숫자가 1개(1), 6개(2, 3, 4, 5, 6, 7), 12개(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19), 18개... 이렇게 1을 제외하고 6개씩 증가하는 걸 볼 수 있음
7    : 1이 필요함 + 6 * 1 (6)
19  :   7이 필요함 + 6 * 2 (12)
37  :  19가 필요함  + 6 * 3 (18)
  => 여기서 필요한 숫자는 temp += 6 * 를 하면 되고 1, 2, 3 반복은 circle이 구역에 맞게 +1씩 증가함으로 조건을 찾을 수 있음

728x90
반응형