Baekjoon 문제 풀기 (2292번 : 벌집) Python
2292번 : 벌집
1. 문제읽기
규칙 수열 구현하기
와 수열을 코드로 나타내기가 너무 힘들었다.
규칙은 찾았는데, 이 규칙으로 어떻게 문제를 풀어야할지 감이 오지 않았다.
결국 포기했다..
차근차근 생각해보면 쉬운 문제이다.
1, 7, 19, 37, 58의 수열을 찾았고, 각 값이 6의 배수로 증가한다는 것도 찾았다.
막혔던 부분은 6의 배수로 증가하는 값을 어떻게 나타내느냐였다.
단순하게 변수 하나를 두고 7이 될때 2, 19가 될때 3, 37이 될때 4… 이런식으로 생각해보니 방 갯수와 똑같이 나타난다는 것을 깨달았고, 이것이 곧 답이였다.
문자열, 몫, 나머지값 등을 생각해서 코드를 짜보았지만 입력 값의 범위가 너무 많아 내가 생각한 코드에는 맞지 않았다.
반복문을 사용하여 숫자가 증가하는 단계의 수를 카운트하는 방법이 있었다.
앞으로 수열 구현 문제를 만나면 반복문도 꼭 체크해봐야겠다.
2. 제출 코드
n = int(input())
bee = 1
count = 1
while n > bee:
bee += 6*count
count += 1
print(count)
3. 공부할 것
그나저나 수업에서 반복문 배운 뒤인데 이런 문제도 못풀다니 상심이 컸다.
너무 오랜시간 붙잡고 있었던 문제였기 때문에, 체크하고 나중에 다시 풀어봐야겠다.
====== 9/30 재도전!
쉽게 풀 수 있을 줄 알았는데 1시간은 걸린 것 같다.
정답 코드를 보니 왜이렇게 짧은지…
bee += 6*count
이 로직이 그렇게 생각이 안났다.
그래도 어떻게 푸는지 감은 잡아서 더러운 코드였지만 풀 수 있었다!
bee와 count가 1부터 시작했으면 더 정답코드에 가깝게 생각할 수 있었을 것 같은 아쉬움이 남는다.
n = int(input())
def func(num):
count = 0
i = 0
bee = 0
if num == 1:
return 1
while num >= bee+2:
bee += 6*(i+1)
count += 1
i += 1
return count+1
print(func(n))
댓글남기기