브루트포스 알고리즘 문제입니다.
코드에서
jari=자릿수 // 123이면 jari=3
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
int jari=to_string(n).length(); //자릿수
if(jari==1)
{
for(int i=1; i<=n/2; i++)
{
if(i*2==n)
{
cout << i;
return 0;
}
}
}
else
{
for(int i=n-9*jari; i<=n; i++)
{
string temp=to_string(i);
int temp_jari=temp.length();
int result=i;
for(int j=0; j<temp_jari; j++)
{
result+=(temp[j]-'0');
}
if(result==n)
{
cout<<i;
return 0;
}
}
}
cout<<0;
}
else문 속 for 문에서 i=n-9*jari로 한 이유는
대강 생각해봤을때 생성자가 아무리 작아도 n-(9*자릿수)보단 커야만하기때문에 시작값을 그렇게 세팅해줬습니다.
좀 더 세세하게 if문으로 나누면 반복횟수를 줄여서 최적화가 가능하겠지만 이 문제는 그렇게까지 세세히 나눌 필요는 없어 보여서 대강 나눠서 풀어봤습니다.
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준-체스판 다시 칠하기(1018번) (0) | 2022.08.12 |
---|---|
백준-덩치(7568번) (0) | 2022.08.11 |
백준-블랙잭(2798번) (0) | 2022.08.06 |
백준-하노이 탑 이동 순서(11729번) (0) | 2022.08.05 |
백준-별 찍기 -10(2447번) (0) | 2022.08.04 |