https://www.acmicpc.net/problem/2292
제출 코드
#include <iostream>
using namespace std;
int getRoom(int a)
{
if (a == 1) return 1;
return (6 * (a - 1)) + getRoom(a - 1);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
for(int i = 1; i < n + 1; i++)
{
int r = getRoom(i);
if (n <= r)
{
cout << i;
break;
}
}
}
맨 처음에는 재귀함수를 이용해 매 시도마다 수를 계산했는데
풀어놓고 보니 굳이 저렇게 풀지 않고도 매번 건너온 방의 개수에 6을 곱해준 수를 더 해서 비교하는 식으로 풀어도 됐다
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
int room = 1;
int count = 1;
cin >> n;
while (n > room)
{
room += 6 * (count);
count++;
}
cout << count;
}
속도가 확실히 빨라졌다
'Programing > 백준, 프로그래머스(C++)' 카테고리의 다른 글
[C++][백준 2275] 부녀회장이 될테야 (0) | 2025.01.04 |
---|---|
[C++][백준 15829] Hashing (0) | 2025.01.04 |
[C++][백준 2231] 분해합 (0) | 2025.01.03 |
[C++][백준 11050] 이항 계수1 (0) | 2025.01.03 |
[C++][백준 2609] 최대공약수와 최소공배수 (0) | 2025.01.03 |