반응형
링크
https://www.acmicpc.net/problem/2292
풀이
N번 방을 몇 개의 방을 거쳐야 갈 수 있는지 계산하는 문제입니다.
라인을 그려서 개수를 세어보았는데, 라인별로 6씩 증가하는 것을 볼 수 있었습니다.
그래서 저는 세 가지 변수를 두어 답을 찾기로 했습니다.
N 값을 받는 n, 1~라인까지의 전체 방 개수 tmp, 몇 개의 라인을 거쳤는지 세는 cnt
tmp를 1로 설정해준 다음, 라인을 거칠 때마다 tmp += cnt * 6을 해주면 tmp는 n과 비교하는 기준이 됩니다.
그렇게 설정하고 n이 tmp보다 작거나 같은 경우에 반복문을 빠져나와 cnt를 출력하면 문제를 해결할 수 있습니다.
코드
//2292_벌집
#include <cstdio>
using namespace std;
int n, cnt, tmp=1;
int main() {
scanf("%d", &n);
while (++cnt) {
if (n <= tmp) break;
tmp += cnt * 6;
}
printf("%d\n", cnt);
return 0;
}
반응형
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ][DP] 2775 부녀회장이 될테야 (0) | 2020.03.07 |
---|---|
[백준 BOJ] 2869 달팽이는 올라가고 싶다 (0) | 2020.03.07 |
[백준 BOJ] 2839 설탕 배달 (0) | 2020.03.07 |
[백준 BOJ] 4673 셀프 넘버 (0) | 2020.03.01 |
[백준 BOJ] 1065 한수 (0) | 2020.02.29 |