정답 코드:
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가 된다.