반응형
분류: 기본수학1
▶문제
▶코드
//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨
package math_1;
import java.util.Scanner;
public class p2292 {
//벌집 1+1 ~ 1+1*6 / 7+1 ~ 7+2*6 / first(=start+1) ~ start+x*6
//중요: 답은 x+1해줘야됨. x는 지나간 문의 갯수, x+1은 지나간 방의 갯수(문제는 방의 갯수를 세는 것이다.)
//13->2개의 문을 지나고 3개의 방을 지난다.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int x =1, start=1;
int answer = 0;
while(true) {
if(n==1) {answer=1; break;}
if(start+1<= n && n<=start+x*6) {
answer =x+1;
break;
}
start = start+x*6;
x = x+1;
}
System.out.print(answer);
sc.close();
}
}
▶처음에 딱 보고 어렵겠다 생각했는데 그렇지 않았다.
숫자들은 한 겹씩 쌓일때마다 규칙적인 범위로 늘어난다.
(1) 1 ~ 1+0x6
(2~7) 1+1 ~ 1+1x6=7
(8~19) 7+1 ~ 7+2x6=19
(20~37) 19+1 ~ 19+3x6=37
이전 층의 마지막 값에 +1한 수 ~ 이전층 마지막 값+층(X)x6한 수
즉 범위는 start +1 ~ start+6X 가 되고
start를 계속 현재범위의 마지막 수로 바꿔주고 x+1하며 다음 범위로 넘어간다.
※x를 늘려가며 범위에 해당될때의 x를 구한다.
▶x는 지나간 문의 갯수이므로, 답인 지나간 방의 갯수는 x+1 해줘야 정답이 된다.
채점결과
링크 www.acmicpc.net/problem/2292
2292번: 벌집
위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌
www.acmicpc.net
반응형
'백준알고리즘' 카테고리의 다른 글
백준알고리즘:p10870 피보나치 수 5 (0) | 2021.03.28 |
---|---|
백준알고리즘:p10872 팩토리얼 [재귀] (0) | 2021.03.28 |
백준알고리즘:p1011 Fly me to the Alpha Centauri (0) | 2021.03.28 |
백준알고리즘:p1978, p2581 소수찾기 소수 (0) | 2021.03.28 |
백준알고리즘:p2108 통계학 (0) | 2021.03.20 |
댓글