본문 바로가기
백준알고리즘

백준알고리즘:p2292 벌집

by socialcomputer 2021. 3. 28.

분류: 기본수학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 해줘야 정답이 된다. 

 


채점결과

많이 틀렸는데 다 X+1을 안해서 틀렸다ㅠㅠㅠㅠ

 

링크 www.acmicpc.net/problem/2292

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

 

댓글