SMALL
문제 출처
풀이
수열 개념을 활용해서 문제를 풀면 됩니다.
방이 한 개씩 증가할 때 마지막 방의 번호는 1, 7, 19, 37 ... 입니다.
각 항의 차이는 6(n-1) 만큼 나네요
처음에는 아래처럼 함수를 썼더니 시간초과가 나서 실패 했었습니다.
target=int(input())
def std(n):
return 3*(n**2)-3*n+1
n=1
while True:
if std(n-1) < target and target <= std(n):
print(n)
break
else: n+=1
풀이코드 정답
함수를 쓰지 않는 방법으로 해서 정답!
target=int(input())
std=1
n=1
while True:
if target > std:
std+=6*n
n+=1
else:
print(n)
break
LIST
'알고리즘-python > 백준 문제' 카테고리의 다른 글
[백준/1193/파이썬(Python3)] 분수 찾기 (0) | 2021.07.09 |
---|---|
[백준/1927/파이썬(Python3)] 최소힙 (0) | 2021.07.08 |
[백준/1712/파이썬(Python3)] 손익분기점 (0) | 2021.07.07 |
[백준/1316/파이썬(Python3)] 그룹 단어 체커 (0) | 2021.07.06 |
[백준/2941/파이썬(Python3)] 크로아티아 알파벳 (0) | 2021.07.05 |