728x90
반응형

2292번 문제

import sys

N = int(sys.stdin.readline())
#2 3 4 5 6 7 ==> 1개(6개의 방)1
#8 9 10 11 12 13 14 15 16 17 18 19 ==>2개(12개의 방)3
#20 ~37 ==>3개(18개의 방)6
#38~61 ==> 4개(24개의 방)10
def func(n):
    range1=  int((6*n*(n-1)//2) + 2)
    #삼각수 잘 활용하기 ==> 한 방에 들어갈 범위 구하기
    return range1 
k =1
while True:
    if func(k)<=N<func(k+1):
    #구할 값이 func(k)와 func(k+1)에 있다면
        print(k+1)
        break
    elif N==1:
        print(int('1')) #1값은 1이므로 1출력하고 while문에서 벗어난다.   
        break     
    else:
        #구할 값이 func(k)와 func(k+1)에 없다면 k값을 1 더한다.
        k+=1

★★★KEY POINT★★★

삼각수의 규칙 수학 잘 알아보자

1 3 6 10 15 '''' ==> (n(n-1)/2) +1 

728x90
반응형

+ Recent posts