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

2292번 문제 : 벌집

by son_i 2023. 3. 8.
728x90

2292번: 벌집 (acmicpc.net)

 

2292번: 벌집

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

www.acmicpc.net

나는 너무 어려웠다 분해합처럼 숫자들을 다 쪼개서 그 수가 되는 값들을 (근데 그 가각의 숫자들의 증가폭은 6) 구하는 줄 알았다.

풀이를 좀 찾아봤는데

첫 번째 칸 : 1개                   칸의 최댓값 : 1

두 번째 칸 : 6개                   칸의 최댓값 : (1+6) =7

세 번째 칸 : 12개                 칸의 최댓값 : (1+6+12) = 19

네 번째 칸 : 18개

 .. 이런식으로 칸의 갯수가 6의 배수로 증가함

구해야하는 값인 몇 개의 칸을 짚고가는지 count 변수는 초깃값 1 (출발지 1도 포함이니까)

칸의 층을 나타내는 roomcnt도 1부터 시작 1이있는 1층부터 시작하니까

반복문은 들어온 숫자 num이 roomcnt보다 클 때까지 반복해서

   반복문 안에는 roomcmt에 count*6을 더해나간다. (count*6은 층의 칸 수를 의미) 누적이 되어야하니까 더해나가야함.

 

package algorithm;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		
		int count = 1; //이동한 층의 갯수
		int roomnum = 1; // 칸의 층 1부터 시작이라 초깃값 1로 해줌
		if(num==1) {
			System.out.println(1);
		}
		while(num > roomnum) {
			count++;
			roomnum += (count*6);
		}
		System.out.println(count);
		scanner.close();
	}
}

 

 

 

 

 

 

'알고리즘 > 백준' 카테고리의 다른 글

7568번 문제 : 덩치  (0) 2023.03.11
4153번 문제 : 직각삼각형  (0) 2023.03.10
2231번 문제 : 분해합  (0) 2023.03.07
11651번 문제 : 좌표정렬 2  (0) 2023.03.06
11650번 문제 : 좌표 정렬하기  (0) 2023.03.06