[백준/C++] 2292번: 벌집

꿈별·2022년 11월 21일
0

문제풀이

목록 보기
10/52
post-thumbnail

문제


풀이

#include <iostream>
using namespace std;

int main(void) {
	int cnt = 1;//통과 회차
	int N = 0; //목표 숫자
	int max = 1; //cnt회차의 도달가능한 최댓값

	while (N > max) {
		cnt++;
		max += 6 * (cnt-1);
	}
	cout << cnt;
	return 0;
}

  • 각 회차별 도달가능 최댓값, 방의 개수를 구해봤다.
    • 1회차 -> 1 (1개)
      2회차 -> 2~7 (6개)
      3회차 -> 8~19 (12개)
      4회차 -> 20~37 (18개)
      ...
      회차별 max(최댓값)은 6*(cnt-1)씩 늘어난다.
      단, 1회차의 max는 1.


  • while (N > max) 
    목표 숫자가 현재 회차의 최댓값보다 크면 조건식을 수행한다.
    (N=1이면 조건식을 불만족해 cnt 초기값 그대로 1을 출력함)
  • 	cnt++;
    	max += 6 * (cnt-1);
    다음 회차로 넘어간 뒤, max를 증가시킨다.

0개의 댓글