백준 2292 - 문제 보러 가기
입력 조건
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.
풀이
그림을 살펴보면 각 큐브가 끝나고 다음 큐브로 넘어가는 부분이 존재한다.
2-7, 8-19, 20-37 ...
6*n 만큼 계속 증가한다.
때문에 입력값과 같아지거나 더 클경우 n카운트값이 방의 이동값이 된다.
코드
Go Version
package main
import "fmt"
func main() {
var room int
fmt.Scanf("%d", &room)
fmt.Println(getCount(room))
}
func getCount(room int) int {
cost := 1
for idx := 1; idx <= (room - 1); {
idx += (6 * cost)
cost++
}
return cost
}
'데일리 프로그래밍' 카테고리의 다른 글
[백준][10845] 큐 (파이썬) (0) | 2020.12.30 |
---|---|
[프로그래머스] 멀쩡한 사각형 (0) | 2019.12.04 |
[프로그래머스] 숫자 야구 [Golang] (0) | 2019.11.29 |
[백준][15953] 상금 헌터 [Golang] (0) | 2018.11.21 |