반응형
벌집 모양의 방들이 존재할 때 주어진 번호의 방에 들어가기 위해 몇 번 방을 지나가야하는지를 구하는 문제이다.
벌집 모양은 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;
}
반응형
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
백준 1193 분수찾기 (0) | 2021.02.02 |
---|---|
백준 2869 달팽이는 올라가고 싶다 (0) | 2021.02.01 |
백준 9102 괄호 (0) | 2021.01.29 |
백준 1436 영화감독 숌 (0) | 2021.01.29 |
백준 1316 그룹 단어 체커 (0) | 2021.01.29 |