백준 2292:벌집수학:파이썬

태훈입니다·2022년 12월 13일
0

코테 풀이

목록 보기
31/34


정답 코드:

N = int(input())
num = 1
S = 1
while num < N:
  num += 6 * S
  S += 1
print(S)

코드 풀이:

정말 험난했지만 풀고나니 허무한 문제였다.
우선 이런 문제에선 알고리즘을 파악하려면 규칙을 파악하는 것이 중요하다.
이 문제에서 구하려고 하는 건 다르게 생각하면 입력 수 N이 몇 번째 줄(S)에 속해있는가? 라고도 할 수 있는데,
1번째 줄에 숫자는 6개, 2번째 줄은 12개, 3번째 줄은 18개 이런 식으로 6의 배수로 늘어난다, 다르게 말하면
s번째 줄의 숫자 갯수는 6S라고 볼 수 있다.
먼저 while문을 통해 num가 N보다 작을 때를 True값으로
설정한다.
그 뒤 num = num + (6S)를 해줘서 증가시키고 그 뒤엔 S에 1을 더해준다.
이런식으로 num가 N과 같아지거나 넘어가게 되면
while을 빠져나가 S가 출력되기에 문제가 요구하는 통과하는 방의 갯수는 S와 같다.
예를 들어 문제의 13은 , while문을 2번 통과하고 종료되기에 S = 3 이되고,
58은 4번 통과하고 넘어가기에 S = 5가 된다.
profile
개발 공부를 하고 있는 비전공자입니다!

0개의 댓글