문제 https://www.acmicpc.net/problem/4673
풀이
브루트포스 알고리즘으로 푸는 문제로, 1부터 10000까지를 돌면서 변수 res에 각 자릿수를 더해준다.
어떤 수에 %10 연산을 해주면, 일의 자리수를 구할 수 있으므로, 해당 수가 0이 될 때까지 모듈러 연산을 반복한다.
그렇게 해서 나온 결과를 배열에 넣어주면 배열에는 셀프 넘버를 제외한 수들은 true, 셀프 넘버는 false 값을 가진다.
따라서 배열을 돌면서 false값을 가진 수들을 출력해준다.
코드
#include <iostream>
using namespace std;
bool self[10001];
int main()
{
for(int i=1; i<=10000; i++)
{
int a=i;
int res=i;
while(a>0)
{
res+=a%10;
a=a/10;
}
self[res]=true;
}
for(int i=1; i<=10000; i++)
{
if(!self[i]) cout<<i<<'\n';
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 17413 - 단어 뒤집기 (0) | 2022.06.03 |
---|---|
백준 1213 - 팰린드롬 만들기(C++) (0) | 2022.06.02 |
백준 1475 - 방 번호 (0) | 2022.03.23 |
백준 13015 - 별 찍기 - 23(C++) (0) | 2022.03.22 |
백준 1929 - 소수 구하기(C++) (0) | 2022.03.21 |