반응형
문제유형
수학
풀이 방법 도출 과정
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)
반응형
'Coding Test (코딩 테스트)' 카테고리의 다른 글
[브론즈2]백준 5585번(거스름돈) - 코테공부 27일차(2025.02.18) (0) | 2025.02.18 |
---|---|
[실버2]백준 18111번(마인크래프트) - 코테공부 27일차(2025.02.18) (0) | 2025.02.18 |
준랩 1071번(배열 원소 개수 구하기) - 코테공부 27일차(2025.02.18) (0) | 2025.02.18 |
[실버1]백준 1342번(행운의 문자열) - 코테공부 26일차(2025.02.17) (0) | 2025.02.17 |
[실버2]백준 1182번(부분수열의 합) - 코테공부 26일차(2025.02.17) (0) | 2025.02.17 |