알고리즘/백준(BOJ)
백준 2292 벌집
오뚜깅
2021. 2. 1. 17:29
반응형
벌집 모양의 방들이 존재할 때 주어진 번호의 방에 들어가기 위해 몇 번 방을 지나가야하는지를 구하는 문제이다.
벌집 모양은 6각형으로 형성되어있고, 일정한 규칙을 파악하면 쉽게 풀 수 있다.
일단 동일한 횟수로 지나가야 들어갈 수 있는 방들의 집합을 구분해본다.
Group 1: 1번 1번 방 / 1번 / 1개 = 6 x 0
Group 2: 2~7번 방 / 2번 / 6개 = 6 x 1
Group 3: 8~19번 방 / 3번 / 12개 = 6 x 2
Group 3: 20~37번 방 / 4번 / 18개 = 6 x 3
Group 3: 38~61번 방 / 5번 / 24개 = 6 x 4
Group 3: 62~91번 방 / 6번 / 30개 = 6 x 5
각 그룹의 개수는 6의 배수로 나뉘는 일정한 패턴을 가지고 있다.
따라서 주어진 정수가 어떤 범위의 그룹에 속하는 지 구하고 해당 그룹의 횟수를 답으로 정해주면 된다.
#include <iostream>
using namespace std;
int main(){
int num;
cin >> num;
if(num == 1)
cout << 1;
else{
int range = 1;
int count = 1;
while(true){
if(num <= range)
break;
range += count * 6;
count++;
}
cout << count;
}
return 0;
}
반응형