https://www.acmicpc.net/problem/2292
1. 내가 작성한 코드
a = int(input())
num = 0
arr = []
for i in range(1,a+1):
if i == 1:
arr.append(1)
elif i in [2,3,4,5,6,7]:
arr.append(2)
else:
for i in range(2,a):
if len(arr) >= a:
break
num += 6 * i
for j in range(num, (num+6*i)):
arr.append(i+1)
print(arr[a-1])
한 layer 의 첫 index가 8씩 차이나는 것을 이용해서 코드를 작성했으나
계속 메모리 초과가 발생했다.
결국 구글링 ,,,
2. 모범 답안
n = int(input())
total, cnt = 1,1
while n > total:
total += 6 *cnt
cnt += 1
print(cnt)
while문을 이용하면 된다.
total(총 방의 개수)가 input 값보다 적을 경우 cnt*6 을 증가시켜주면 된다 (그냥 등차수열 이용하면 됨)
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 18870번 좌표 압축(with python) (0) | 2023.01.25 |
---|---|
[백준] 7568번 덩치(with python) (1) | 2023.01.22 |
[백준] 2798번 블랙잭(with python) (0) | 2023.01.21 |
[백준] 2941번 크로아티아 알파벳(with python) (0) | 2023.01.21 |
[백준] 5622번 다이얼(with python) (0) | 2023.01.21 |
댓글