본문 바로가기
Coding Test (코딩 테스트)

[브론즈2]백준 30802번(웰컴 키트) - 코테공부 27일차(2025.02.18)

by BioLearner 2025. 2. 18.
반응형

문제유형

수학

풀이 방법 도출 과정

1.수학적으로 생각해보자 1의 주변에는 6개가 있다. 이것은 2~7까지의 수인데 1에서 건너 뛰려면 1칸이 소요되는 얘이다.

2. 다음 1~7주변의 것을 보자 8~19까지 있다. 이것은 12개이다. 그 다음 주변을 보자. 20 ~ 37까지 있다. 이것은 18개이다.

3. 규칙이 나왔다. 칸을 나갈 수록 카운트가 6 12 18 이 된다. 

4. 이것을 통해 값을 구하도록 하겠다. 

시간 복잡도

시간 복잡도는 모두 O(n)이다. 

코드 및 간단설명

사칙연산을 활용한 문제이다.

n = int(input())

layer = 1
current_max = 1

while n > current_max:
    current_max += 6 * layer
    layer += 1

print(layer)

다른 풀이

1) math함수 사용

제곱근과 올림 계산을 사용하여 수학적으로 문제를 풀었다. 

import math

n = int(input())
layer = math.ceil((math.sqrt(6 * (n - 1) + 1) - 1) / 6) + 1
print(layer)

 

반응형