(Swift) 백준 2292 벌집

SteadySlower·2022년 5월 15일
0

Coding Test

목록 보기
31/305

2292번: 벌집

let n = Int(readLine()!)!

var min = 0
var max = 1
var distance = 1

while true {
    if n >= min && n <= max {
        print(distance)
        break
    } else {
        min = max + 1 //👉 다음 단계의 시작은 전 단계 max의 + 1
        max += 6 * distance // 👉 다음 단계의 마지막은 전 단계의 마지막 + 6 * distance (한 단계 확장할 수록 육각형의 각 변이 1만큼 길어짐)
        distance += 1
    }
}
  1. 수열 문제입니다. 알고리즘 문제라기 보다는 수학문제에 가깝습니다.
  2. 첫 단계를 단순히 1이 아니라 0 ~ 1로 볼 때 더 쉽게 풀 수 있습니다.
  3. 한 단계를 올라갈 때마다 육각형의 변이 하나씩 증가하므로 범위도 그만큼 커집니다.
    1. 전체 범위를 하나의 공식으로 구하려고 하기 보다는 distance라는 변수를 따로 빼서 별도의 등차수열로 생각하면 계산하기 쉽습니다.
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글