문제
https://www.acmicpc.net/problem/2292
풀이
자료구조
- int input : 입력
- int layer : 벌집 단 수
- int start : 시작 숫자
- int finish : 끝 숫자
알고리즘
-수학
설명
벌집이 1단, 2단, 3단 으로 커질 수록 위와 같은 규칙성을 가진다는 것을 찾아서 그 규칙성에 맞게 풀면 된다.
코드
include <iostream>
using namespace std;
int main() {
int input = 0; //입력
int layer = 1; //단 수
int start = 1; //시작 숫자
int finish = 1; //종료 숫자
cin >> input;
while(!((input >= start) && (input <= finish))) { //입력 값이 특정 단의 범위 안에 들어올 때까지
start = finish + 1; //start 값 변경
if(layer == 1){ //1단에서 2단 갈 때는 예외 처리
finish = start + 5;
}
else {
finish = start + (6 * layer) - 1; //finish 값 변경
}
layer++; //layer 값 변경
}
cout << layer << "\n";
return 0;
총평
수학 문제를 풀 때는 규칙성을 빠르게 찾아내는 것이 중요하다.
규칙성을 찾고 식을 세워서 코드를 짜면 쉽게 풀 수 있다.
'🧑💻코딩 테스트 > 백준 (BOJ)' 카테고리의 다른 글
[코딩테스트/ 백준 알고리즘] 18111번 : 마인크래프트 (C++ 풀이) (0) | 2022.01.31 |
---|---|
[백준 알고리즘/ C++] BOJ.9012 : 괄호 (0) | 2022.01.31 |
[코딩테스트/ 백준 알고리즘] BOJ.2798 : 블랙잭 (C++ 풀이) (0) | 2022.01.30 |
[백준 알고리즘/ C++] BOJ.10828 스택 (0) | 2022.01.30 |
[코딩테스트/ 백준 알고리즘] BOJ.1463 : 1로 만들기(바텀업) (C++ 풀이) (0) | 2022.01.18 |
댓글