기본적으로 해당 문제는 계차수열을 구현할 수 있는지 물어보는 문제이다.
2 ~ 7 - 2개
8 ~ 19 - 3개
20 ~ 37 - 4개
38 ~ 61 - 5개
.
.
6의 배수씩 계속 수가 늘어가고 있는 것을 볼 수 있다.
반복횟수가 정해지지 않고 어떤 조건이 성립될 떄까지 반복해서 더이상 안 되는 부분을 찾아야 하기 때문에 무한루프를 사용해주었다.
cf.
반복문이 실행되고 있는 시점에서 가장 근접한 반복문(루프) 탈출
여러 개의 루프가 중첩된 경우 현재 위치한 루프 하나만 탈출
반복도중 처리를 중단하고 반복문의 시작 위치로 이동
정밀한 제어 구조를 만들 때 사용
출처: https://bymakers.tistory.com/15 [bymakers]
M = int(sys.stdin.readline())
if M == 1:
print(1)
else:
i = 2
cur = 0
while True:
if M < i :
break
else:
cur += 1 # 실수했던 부분으로, 그냥 다음 라인에 cur + 1 해줌 (cur값은 반복 돌 때마다 0으로 리셋되기 때문에 적용되지 않음!!)
i = i + 6 * cur
x = (i - 2) // 6
j = 0
while True:
j += 1
if j * (j+1) // 2 == x:
break
print(2+j-1)
n = int(input())
room = 1
cnt = 1
while n > room:
room = room + (6 * cnt)
cnt += 1
print(cnt)