티스토리 뷰
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 - 인프런 | 강의
강의 저작권으로 인해 문제를 공개하지 않았으며, 답안 코드 혹은 성공한 코드가 작성된 게시글입니다.
27. N!의 표현법
2023년 2월 14일
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N = 0;
cin >> N;
vector<int> store(N + 1);
for(int i = 2; i <= N; i++)
{
int temp = i;
int divide = 2;
while(temp > 1)
{
if(divide > i)
break;
if(temp % divide == 0)
{
temp /= divide;
store[divide]++;
}
else
divide++;
}
}
cout << N <<"! = ";
for(int i = 0; i < N + 1; i++)
{
if(store[i] == 0)
continue;
cout << store[i] << ' ';
}
return 0;
}
숫자를 계속해서 나눠주기 위해 while문을 사용했다.
28. N!에서 0의 개수
2023년 2월 14일
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int N = 0;
cin >> N;
int twoCnt = 0;
int fiveCnt = 0;
for(int i = 1; i <= N; i++)
{
int temp = i;
while(i > 1)
{
if(temp % 2 == 0)
{
twoCnt++;
temp /= 2;
}
else if(temp % 5 == 0)
{
fiveCnt++;
temp /= 5;
}
else
break;
}
}
cout << min(twoCnt, fiveCnt);
return 0;
}
0으로 끝나려면 10을 곱하면 된다. 그래서 2와 5가 곱해진 수를 체크한 후 10이 되는 수를 출력해주었다.
29. 3의 개수는? (small)
2023년 2월 14일
#include <iostream>
using namespace std;
int main()
{
int N = 0;
cin >> N;
int cnt = 0;
for(int i = 3; i <= N; i++)
{
int temp = i;
while(temp > 2)
{
if(temp % 10 == 3)
{
cnt++;
temp /= 10;
}
else
temp /= 10;
}
}
cout << cnt;
return 0;
}
입력한 수를 for문을 통해 전부 다 체크하는 방법이다. 수의 제한이 크지 않아 이 방법이 가능했다.
'😈 알고리즘 > 🍃 인프런 #1' 카테고리의 다른 글
🙏 문제 푼 개수 (0) | 2023.02.22 |
---|---|
🙏 30, 31번 문제 (0) | 2023.02.21 |
🙏 25, 26번 문제 (0) | 2023.02.19 |
🙏 23, 24번 문제 (0) | 2023.02.18 |
🙏 21, 22번 문제 (0) | 2023.02.17 |
댓글