무식하게 조건별로 식을 써버렸지만... 구간이 짧아서 가능했지 뭐... 무식하게 풀어서 10점 중 2점짜리 풀이다
이렇게 구간별로 조건을 걸지말고 아래와 같이 알맞은 로직을 생각해서 시간을 아끼도록 하자
#include <string>
#include <vector>
using namespace std;
bool solution(int x) {
bool answer=0;
int sum=0;
if(x<10){
sum = x;
}
if((x>=10)&&(x<100)){
sum = (x/10)+(x%10);
}
if((x>=100)&&(x<1000)){
sum = (x/100)+((x%100)/10)+(x%10);
}
if((x>=1000)&&(x<10000)){
sum = (x/1000)+((x%1000)/100)+((x%100)/10)+(x%10);
}
if(x==10000){
sum = 1;
}
if(x%sum==0){
answer=true;
} else{
answer=false;
}
return answer;
}
이 코드는 현명한 자의 코드다... 바로 이렇게 생각할수있도록 노력하자
#include <bits/stdc++.h>
using namespace std;
bool solution(int x) {
bool solution(int x) {
bool answer = true;
int temp = x;
int sum= = 0;
// 마지막 자리수부터 누적합에 더하고, 10으로 나눠 자리수를 줄여 나간다
while(temp>0){
sum=sum+(temp%10);
temp=(temp/10);
}
// 다음 if 문을 삼항연산자로 나타내면 아래와 같다
// if(x%sum==0)
// true;
// else
// false;
return x % Sum == 0 ? true : false;
}
댓글