728x90
🏆 목차.
🛒 문제
🎨 코드
#include<iostream>
using namespace std;
int main()
{
int input = 0;
cin >> input;
int step = 1;
//1이면 스텝이 1
if (input == 1) step = 1;
for (int sum = 2; sum <= input; step++)
sum += 6 * step;
cout << step;
}
🎯 풀이
백준 2292번 벌집 문제도 특정한 패턴이 있어 이를 파악하면 비교적 간단하게 해결할 수 있습니다.
첫 번째 1번 벌집을 제외하고 이후부터 2~7번(6개), 8~19번(12개), 20~37번(18개)으로 한 스텝이 증가할 때마다 6개씩 증가하는 모습을 확인할 수 있습니다.
이를 코드로 구현했을때,
for (int sum = 2; sum <= input; step++)
sum += 6 * step;
시작점인 1을 포함하기 위해 sum은 2로 초기화해주었습니다.
sum이 입력값보다 작거나 같은 동안 계속 반복되게 해 주었고,
sum은 6 * step 계산을 통해 증가합니다.
이를 통해 위 규칙대로 코드를 구현할 수 있게 됩니다.
728x90
'코딩테스트' 카테고리의 다른 글
[C++] 백준 2903번 : 중앙 이동 알고리즘 (0) | 2024.02.20 |
---|---|
[C++] 백준 11005 : 진법 변환 2 (1) | 2024.02.20 |
[C++] 백준 3009번 : 네 번째 점 (0) | 2024.02.18 |
[C++] 프로그래머스 : 문자열 겹쳐쓰기(replace) (1) | 2023.11.12 |
[C++][sort] 백준 1431번 : 시리얼 번호 (1) | 2023.11.11 |